;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file contains utf-8 non-ASCII characters, ;;; and so cannot be loaded into Emacs 22 or earlier. (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (string-lessp emacs-version "23") (error "`%s' was compiled for Emacs 23 or later" #$)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\210\300\311!\210\300\312!\210\300\313!\210\314\315\316\"\210\314\317\320\"\210\314\321\322\"\210\314\323\324\"\210\314\325\326\"\210\314\327\326\"\210\314\330\331\"\210\314\332\333\"\207" [require timezone cl-lib seq map calendar subr-x pcase eieio eieio-base eieio-opt mailabbrev autoload ebdb-i18n-countries "ebdb-i18n" widget-group-match "wid-edit" ebdb-migrate-from-bbdb "ebdb-migrate" eieio-customize-object "eieio-custom" diary-sexp-entry "diary-lib" diary-add-to-list org-agenda-list "org-agenda" org-make-tags-matcher "org"] 3) #@46 The list of currently-loaded EBDB databases. (defvar ebdb-db-list nil (#$ . 1057)) #@35 A list of all the loaded records. (defvar ebdb-record-tracker nil (#$ . 1146)) #@111 Hash table for EBDB records. Hashes the fields first-last-name, last-first-name, organization, aka, and mail. (defvar ebdb-hashtable (make-hash-table :test 'equal) (#$ . 1232)) #@260 Hash table of role relationships. Keys are string UUIDs of organizations. Values are lists of (record-uuid . role-field). Hashtable entries are created and deleted by the `ebdb-init-field' and `ebdb-delete-field' methods of the `ebdb-field-role' field class. (defvar ebdb-org-hashtable (make-hash-table :size 500 :test 'equal) (#$ . 1416)) #@117 Hash table of record relationships. Keys are the related records' UUIDs, values are the relation fields themselves. (defvar ebdb-relation-hashtable (make-hash-table :size 500 :test 'equal) (#$ . 1763)) #@121 Enable debugging if non-nil during compile time. You really should not disable debugging. But it will speed things up. (defvar ebdb-debug t (#$ . 1972)) #@78 Bind this to t to quiet things down - do not set it. See also `ebdb-silent'. (defvar ebdb-silent-internal nil (#$ . 2132)) #@176 A list of strings as returned by `ebdb-dwim-mail'. As mail field instances are created, a "dwim"-style string is added here, for use in `completion-at-point' in mail buffers. (defvar ebdb-dwim-completion-cache nil (#$ . 2262)) #@408 An overriding prompt for `ebdb-read-string'. This is bound dynamically around code that will end up calling `ebdb-read-string'. It can be a plain string, in which case the value will replace the existing prompt. It can also be a cons of (STRING . POSITION), where POSITION can be one of the symbols `append' or `prepend', in which case STRING will be concatenated with the existing prompt as appropriate. (defvar ebdb-read-string-override nil (#$ . 2496)) (byte-code "\300\301\302\303\304\305%\210\306\307\310\311\312DD\313\304\301\314\315&\210\306\316\310\311\317DD\320\304\301\314\321&\210\306\322\310\311\323DD\324\304\301\314\321&\210\306\325\310\311\326DD\327\304\301\314\330&\210\306\331\310\311\332DD\333\304\301\314\334&\210\306\335\310\311\336DD\337\304\301\314\340&\210\306\341\310\311\342DD\343\304\301\314\344&\210\306\345\310\311\346DD\347\304\301\314\350&\210\306\351\310\311\352DD\353\304\301\314\354&\210\306\355\310\311\356DD\357\304\301\314\321&\210\306\360\310\311\361DD\362\304\301\314\321&\210\306\363\310\311\364DD\365\304\301\314\321&\210\300\305\302\366\304\367\304\370&\210\300\371\302\372\304\305%\210\300\373\302\374\304\305%\210\300\375\302\376\304\305%\210\377\201@\201A\201B#\210\300\201C\302\201D\304\305%\210\300\201E\302\201F\304\305%\210\300\201G\302\201H\304\201E%\210\300\201I\302\201J\304\201E%\210\377\201I\201A\201K#\210\300\201L\302\201M\304\201E%\210\377\201L\201A\201N#\210\306\201O\310\311\201PDD\201Q\304\371\314\201R&\210\306\201S\310\311\201TDD\201U\304\305\314\201V&\210\306\201W\310\311\201XDD\201Y\304\305\314\201Z&\210\306\201[\310\311\201\\DD\201]\304\305\314\201^&\210\306\201_\310\311\201`DD\201a\304\305\314\311&\210\306\201b\310\311\201cDD\201d\304\305\314\201e&\210\306\201f\310\311\201gDD\201h\304\201i\314\321&\210\306\201j\310\311\201kDD\201l\304\201i\314\201Z&\210\306\201m\310\311\201nDD\201o\304\201i\314\201Z&\207" [custom-declare-group ebdb-eieio nil "Options for an EIEIO version of EBDB." :group ebdb custom-declare-variable ebdb-sources funcall function #[0 "\300\301!\207" [locate-user-emacs-file "ebdb"] 2] "User option specifying EBDB database sources.\nIt can be a single element, or a list of elements. If an element\nis a string, it is treated as a filename, and used to create an\ninstance of `ebdb-db-file'.\n\nElements can also be instances of subclasses of `ebdb-db'.\nCurrently, the only subclass is `ebdb-db-file', though you can\ncreate your own. When EBDB is loaded, the `ebdb-db-load' method\nwill be called on each of class instances." :type (choice (file :tag "File") (repeat (file :tag "File"))) ebdb-auto-merge-records #[0 "\300\207" [nil] 1] "If non-nil, automatically merge multiple records with the same UUID.\nIf you are using multiple databases, and intend to keep some\nrecords in more than one database at once, you can set this to t\nto have EBDB treat records with identical UUIDs as \"the same\"\nrecord, and merge them automatically when the databases are\nloaded. If it is nil, you'll be prompted to do an interactive\nmerge.\n\nMerging is currently \"dumb\", ie the record with the older\ntimestamp is essentially deleted and replaced by the newer.\nFuture merging strategies may be smarter." boolean ebdb-save-on-exit #[0 "\300\207" [nil] 1] "If non-nil, automatically save EBDB when exiting Emacs.\nThe user is always prompted to save the EBDB as part of the Emacs\nshutdown process anyway, reducing the usefulness of this option.\nIf you're using EBDB without opening `ebdb-mode' buffers, you\nmight consider setting it to t." ebdb-default-record-class #[0 "\300\207" [ebdb-record-person] 1] "The default class to use for new records." (restricted-sexp :match-alternatives ((lambda (cls) (and cls (child-of-class-p cls 'ebdb-record))))) ebdb-default-name-class #[0 "\300\207" [ebdb-field-name-complex] 1] "The default name class to use for person records.\n\nOrganization names are currently hard-coded to use\n`ebdb-field-name-simple'." (restricted-sexp :match-alternatives ((lambda (cls) (and cls (child-of-class-p cls 'ebdb-field-name))))) ebdb-default-mail-class #[0 "\300\207" [ebdb-field-mail] 1] "The default class to use for mail fields." (restricted-sexp :match-alternatives ((lambda (cls) (and cls (child-of-class-p cls 'ebdb-field-mail))))) ebdb-default-phone-class #[0 "\300\207" [ebdb-field-phone] 1] "The default class to use for phone fields." (restricted-sexp :match-alternatives ((lambda (cls) (and cls (child-of-class-p cls 'ebdb-field-phone))))) ebdb-default-address-class #[0 "\300\207" [ebdb-field-address] 1] "The default class to use for address fields." (restricted-sexp :match-alternatives ((lambda (cls) (and cls (child-of-class-p cls 'ebdb-field-address))))) ebdb-default-notes-class #[0 "\300\207" [ebdb-field-notes] 1] "The default class to use for notes fields." (restricted-sexp :match-alternatives ((lambda (cls) (and cls (child-of-class-p cls 'ebdb-field-notes))))) ebdb-try-speedups #[0 "\300\207" [nil] 1] "When non-nil, try to speed up loading by disabling checks.\nThis will set `eieio-skip-typecheck' when loading databases. The\ntype checks are done for a reason, it's possible this might lead\nto errors or database corruption." ebdb-vacuum-databases #[0 "\300\207" [t] 1] "When non-nil, minimize the size of database files.\nThis option only has an effect in Emacs>27. At present it\nprevents indentation from being written to the persistence files;\nin the future more shrinkage may be possible." ebdb-print-object-name #[0 "\300\207" [t] 1] "When non-nil, print object names in the database files.\nThis is an EBDB-specific version of the option\n`eieio-print-object-name', which only exists in Emacs 27 or\nhigher. It will have no effect in earlier versions of Emacs, but\ndo note that Emacs 26 or lower REQUIRES that the name be present,\nand will raise an error if it is not. If there's a chance that a\ndatabase might be written by a newer Emacs, and read by an older,\ndo not set this to nil." "EBDB customizations" news mail ebdb-record-edit "Variables that affect the editing of EBDB records." ebdb-sendmail "Variables that affect sending mail." ebdb-snarf "Customizations for EBDB snarf." put ebdb-snarf-snarf custom-loads (ebdb-snarf) ebdb-search "Customizations for EBDB searching." ebdb-utilities "Customizations for EBDB utilities." ebdb-utilities-dialing "EBDB customizations for phone number dialing." ebdb-utilities-ispell "Customizations for EBDB ispell interface" (ebdb-ispell) ebdb-utilities-pgp "Customizations for EBDB pgp" (ebdb-pgp) ebdb-image #[0 "\300\207" [nil] 1] "The default method for displaying record images.\nIf a record is given a `ebdb-field-image' field, the value of\nthat field specifies how or where to find the image for the\nrecord. This option provides a default for that value.\n\nIf the field value is `name' or `fl-name', the first and last\nname of the record are used as file name. If it is `lf-name',\nthe last and first name of the record are used as file name.\n\nIf it is a string, that string is assumed to be a filename and\nthe file is searched in the directories in `ebdb-image-path'.\nFile name suffixes are appended according to\n`ebdb-image-suffixes'. See `locate-file'.\n\nIf it is nil, the method `ebdb-field-image-function' will be\ncalled with two arguments: the image field and the record. The\nfunction should return either a filename, or actual image data." (choice (const :tag "Use built-in function" nil) (const name) (const fl-name) (const lf-name)) ebdb-uuid-function #[0 "\300\207" [#1="uuidgen"] 1 #1#] "Function used for creating a UUID for records.\nIf a string, assume a system executable. If a symbol, assume an\nelisp function for creating UUIDs. For instance, `org-id-uuid'\nis a good candidate." (or string symbol) ebdb-record-self #[0 "\300\207" [nil] 1] "The UUID of the record representing the user.\nSee the docstring of `ebdb-user-mail-address-re' for possible uses." string ebdb-country-list #[0 "\300\207" [nil] 1] "A list of country names known to EBDB.\nThis is a list of simple strings, which do not change EBDB's\nbehavior in any way. You can also require the \"ebdb-i18n\"\nlibrary for more internationally-aware functionality, in which\ncase this variable will be ignored." (list-of string) ebdb-default-address-format-function #[0 "\300\207" [ebdb-format-address-default] 1] "Default function used to format an address.\nThis function produces a string that looks more or less like a US\naddress. Either write a custom function to format all addresses,\nor load `ebdb-i18n' to format addresses based on country-specific\nrules." ebdb-auto-revert #[0 "\300\207" [nil] 1] "If t revert unchanged database without querying.\n\nIf t and a database file has changed on disk, while the database\nhas not been modified inside Emacs, revert the database\nautomatically. If nil or the database has been changed inside\nEmacs, always query before reverting." (choice (const :tag "Revert unchanged database without querying" t) (const :tag "Ask before reverting database" nil)) ebdb-use-diary #[0 "\300\207" [t] 1] "If non-nil add anniversary field values to the diary." ebdb-utilities-anniv ebdb-anniversary-md-format #[0 "\300\207" [#2="%B %d"] 1 #2#] "Format string used for displaying month-day anniversary dates.\nSee the docstring of `format-time-string' for the meaning of\nvarious formatting escapes, but keep in mind that only month and\nday values are available." ebdb-anniversary-ymd-format #[0 "\300\207" [#3="%B %d, %Y"] 1 #3#] "Format string used for displaying year-month-day anniversary dates.\nSee the docstring of `format-time-string' for the meaning of\nvarious formatting escapes, but keep in mind that only year,\nmonth, and day values are available."] 8) #@389 A list of all anniversary diary entries. Entries are added and removed in the `ebdb-init-field' and `ebdb-delete-field' methods of the `ebdb-field-anniversary' class, and added with the `ebdb-diary-add-entries' function. Each entry is a two-element list: a string representation of the anniversary date, and the sexp (as a string): (diary-anniversary MM DD YYYY) (the year is optional) (defvar ebdb-diary-entries nil (#$ . 12303)) #@43 Add anniversaries from EBDB to the diary. (defalias 'ebdb-diary-add-entries #[0 "\211\205*\211@\211@A\211@A\302 #\243\211\203!\303 #\210\266A\266\202\202\207" [ebdb-diary-entries original-date diary-sexp-entry diary-add-to-list] 13 (#$ . 12742)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\311&\210\300\315\302\303\316DD\317\310\311%\210\300\320\302\303\321DD\322\310\311%\207" [custom-declare-variable ebdb-before-load-hook funcall function #[0 "\300\207" [nil] 1] "Hook run before loading databases." :group ebdb :type hook ebdb-after-load-hook #[0 "\300\207" [nil] 1] "Hook run after loading databases." ebdb-before-save-hook #[0 "\300\207" [nil] 1] "Hook run before saving all databases." ebdb-after-save-hook #[0 "\300\207" [nil] 1] "Hook run after saving all databases."] 8) #@408 *Hook run each time a new EBDB record is created. Run with one argument, the new record. This is called before the record is added to the database, followed by a call of `ebdb-change-hook'. If a record has been created by analyzing a mail message, hook functions can use the variable `ebdb-update-records-address' to determine the header and class of the mail address according to `ebdb-message-headers'. (defvar ebdb-create-hook nil (#$ . -13602)) #@234 *Hook run each time a EBDB record is changed. Run with one argument, the record. This is called before the database is modified. If a new ebdb record is created, `ebdb-create-hook' is called first, followed by a call of this hook. (defvar ebdb-change-hook nil (#$ . -14060)) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\315&\210\300\316\302\303\317DD\320\306\307\310\315&\210\300\321\302\303\322DD\323\306\307\310\315&\210\300\324\302\303\325DD\326\306\307\310\315&\210\300\327\302\303\330DD\331\306\307\310\332&\210\300\333\302\303\334DD\335\306\336\310\337&\210\300\340\302\303\341DD\342\306\336\310\343&\210\300\344\302\303\345DD\346\306\336\310\343&\210\300\347\302\303\350DD\351\306\336\352\353\310\354& \210\300\355\302\303\356DD\357\306\360\310\311&\210\300\361\302\303\362DD\363\306\307\310\364&\210\300\365\302\303\366DD\367\306\370\310\371&\210\300\372\302\303\373DD\374\306\370\310\303&\210\300\375\302\303\376DD\377\306\370\310\303&\207" [custom-declare-variable ebdb-time-format funcall function #[0 "\300\207" [#1="%Y-%m-%d %T %z"] 1 #1#] "The EBDB time stamp format.\nUsed for human-readable display of timestamp values." :group ebdb :type string ebdb-after-change-hook #[0 "\300\207" [nil] 1] "Hook run each time a EBDB record is changed.\nRun with one argument, the record. This is called after the database\nis modified. So if you want to modify a record when it is created or changed,\nuse instead `ebdb-create-hook' and / or `ebdb-change-hook'." hook ebdb-before-load-db-hook #[0 "\300\207" [nil] 1] "Hook run before each database is loaded.\nRun with one argument, the database being loaded." ebdb-after-load-db-hook #[0 "\300\207" [nil] 1] "Hook run after each database is loaded.\nRun with one argument, the database being loaded." ebdb-initialize-hook #[0 "\300\207" [nil] 1] "Normal hook run after the EBDB initialization function `ebdb-initialize'." ebdb-silent #[0 "\300\207" [nil] 1] "If t, EBDB suppresses all its informational messages and queries.\nBe very very certain you want to set this to t, because it will suppress\nqueries to alter record names, assign names to addresses, etc.\nLisp Hackers: See also `ebdb-silent-internal'." (choice (const :tag "Run silently" t) (const :tag "Disable silent running" nil)) ebdb-search-transform-functions #[0 "\300\207" [nil] 1] "Functions used to transform strings during searching.\nEach time the user enters a search search string during\ninteractive search, that string will be passed through each of\nthe functions in this list, which have a chance to modify the\nstring somehow before it is actually matched against field\nvalues.\n\nEach function should accept a single argument, a string, and\nreturn the transformed string. If the criteria for any given\nsearch is not a string, it will not be passed through these\nfunctions." ebdb-search list ebdb-case-fold-search #[0 "\300\301!\207" [default-value case-fold-search] 2] "Value of `case-fold-search' used when searching EBDB records." boolean ebdb-char-fold-search #[0 "\300\207" [nil] 1] "If t, record searches will use character folding.\n\nCharacter folding means that, for instance, searches for \"i\"\nwill match \"ì\", and so on. This may slow searching down." ebdb-hash-extra-predicates #[0 "\300\207" [nil] 1] "Extra predicates when looking up entries in the EBDB hashtable.\n\nPredicates are used to filter results from the hashtable,\nensuring that string lookups only return the results they're\nmeant to.\n\nThis option should be a list of conses, where the car is a\nsymbol, and the cdr is a lambda form which accepts the string key\nand a record, and returns t if the key is acceptable for\nreturning that record." :package-version "0.2" (repeat (cons symbol functionp)) ebdb-signal-program #[0 "\300\301!\207" [executable-find "signal-cli"] 2] "The name of the signal-cli program, if installed.\n\nThis program must be present in order to send text messages\nthrough the Signal service." ebdb-utilities-dialing ebdb-info-file #[0 "\300\207" [nil] 1] "Location of the ebdb info file, if it's not in the standard place." (choice (const :tag "Standard location" nil) (file :tag "Nonstandard location")) ebdb-canonical-hosts #[0 "\300\207" ["\\(?:\\(?:cs\\|ri\\)\\.cmu\\.edu\\)"] 1] "Regexp matching the canonical part of the domain part of a mail address.\nIf the domain part of a mail address matches this regexp, the domain\nis replaced by the substring that actually matched this address.\n\nUsed by `ebdb-canonicalize-mail-1'. See also `ebdb-ignore-redundant-mails'." ebdb-utilities (regexp :tag "Regexp matching sites") ebdb-canonicalize-mail-function #[0 "\300\207" [nil] 1] "If non-nil, it should be a function of one arg: a mail address string.\nWhen EBDB is parsing mail addresses, the corresponding mail\naddresses are passed to this function first. It acts as a kind\nof \"filter\" to transform the mail addresses before they are\ncompared against or added to the database. See\n`ebdb-canonicalize-mail-1' for a more complete example. If this\nfunction returns nil, EBDB assumes that there is no mail address.\n\nSee also `ebdb-ignore-redundant-mails'." ebdb-message-clean-name-function #[0 "\300\207" [ebdb-message-clean-name-default] 1] "Function to clean up the name in the header of a message.\nIt takes one argument, the name as extracted by\n`mail-extract-address-components'."] 10) #@27 Return the "self" record. (defalias 'ebdb-record-self #[0 "\301\302\"\207" [ebdb-record-self ebdb-gethash uuid] 3 (#$ . 19492)]) (byte-code "\300\301\302\303#\210\304\305\306\307\310DD\311\312\313\314\315&\210\304\316\306\307\317DD\320\312\313\314\321&\210\304\322\306\307\323DD\324\312\313\314\325&\210\304\326\306\307\327DD\330\312\313\314\331&\210\304\332\306\307\333DD\334\312\313\314\335&\210\304\336\306\307\337DD\340\312\313\314\325&\210\304\341\306\307\342DD\343\312\313\314\344&\210\304\345\306\307\346DD\347\312\313\314\350&\210\304\351\306\307\352DD\353\312\313\314\354&\210\304\355\306\307\356DD\357\312\313\314\350&\210\304\360\306\307\361DD\362\312\313\314\325&\210\304\363\306\307\364DD\365\312\313\314\366&\210\304\367\306\307\370DD\371\312\313\314\372&\210\304\373\306\307\374DD\375\312\313\314\376&\210\304\377\306\307\201@DD\201A\312\313\314\201B&\210\304\201C\306\307\201DDD\201E\312\313\314\201F&\210\304\201G\306\307\201HDD\201I\312\201J\314\201K&\210\304\201L\306\307\201MDD\201N\312\201J\314\201O&\210\304\201P\306\307\201QDD\201R\312\201J\314\201S&\210\304\201T\306\307\201UDD\201V\312\201J\314\201W&\210\304\201X\306\307\201YDD\201Z\312\201J\314\201[&\210\304\201\\\306\307\201]DD\201^\312\201J\314\307&\210\304\201_\306\307\201`DD\201a\312\201J\314\201b&\207" [put ebdb-record-self byte-optimizer byte-compile-inline-expand custom-declare-variable ebdb-default-separator funcall function #[0 "\300\207" [("[,;]" ", ")] 1] "The default field separator. It is a list (SPLIT-RE JOIN).\nThis is used for fields which do not have an entry in `ebdb-separator-alist'." :group ebdb-record-edit :type (list regexp string) ebdb-separator-alist #[0 "\300\207" [((record "\n\n" "\n\n") (name-first-last "[ ,;]" " ") (name-last-first "[ ,;]" ", ") (name-field ":\n" ":\n") (phone "[,;]" ", ") (address ";\n" ";\n") (organization "[,;]" ", ") (affix "[,;]" ", ") (aka "[,;]" ", ") (mail "[,;]" ", ") (ebdb-field-tags ":" ":") (mail-alias "[,;]" ", ") (vm-folder "[,;]" ", ") (birthday "\n" "\n") (wedding "\n" "\n") (anniversary "\n" "\n") (notes "\n" "\n"))] 1] "Alist of field separators.\nEach element is of the form (FIELD SPLIT-RE JOIN).\nFor fields lacking an entry here `ebdb-default-separator' is used instead." (repeat (list symbol regexp string)) ebdb-completion-ignore-case #[0 "\300\207" [t] 1] "EBDB-specific value of `completion-ignore-case'.\nThis has an effect when entering field data with completion, for\ninstance anniversary months or address countries." boolean ebdb-image-path #[0 "\300\207" [nil] 1] "List of directories to search for `ebdb-image'." (repeat (directory)) ebdb-image-suffixes #[0 "\300\207" [(".png" ".jpg" ".gif" ".xpm")] 1] "List of file name suffixes searched for `ebdb-image'." (repeat (string :tag "File suffix")) ebdb-read-name-articulate #[0 "\300\207" [nil] 1] "Specify how to read record names.\n\nIf nil, read full names as single strings, and parse them\naccordingly. If t, the user will be prompted separately for each\nfield of the name.\n\nIf this option is nil, and the user enters a single string, the\nresulting name field will be an instance of\n`ebdb-field-name-simple'. Even if this option is t, the user can\nstill trigger the creation of a simple name field by entering a\nsingle string for the surname, and nothing else." ebdb-lastname-prefixes #[0 "\300\207" [("von" "de" "di")] 1] "List of lastname prefixes recognized in name fields.\nUsed to enhance dividing name strings into firstname and lastname parts.\nCase is ignored." (repeat string) ebdb-lastname-re #[0 "\301\302!\303Q\207" [ebdb-lastname-prefixes "[- ]*\\(\\(?:\\<" regexp-opt "\\>[- ]+\\)?\\w[[:word:]'-]+\\)\\>"] 3] "Regexp matching the last name of a full name.\nIts first parenthetical subexpression becomes the last name." regexp ebdb-lastname-suffixes #[0 "\300\207" [("Jr" "Sr" "II" "III")] 1] "List of lastname suffixes recognized in name fields.\nUsed to dividing name strings into firstname and lastname parts.\nAll suffixes are complemented by optional `.'. Case is ignored." (repeat string) ebdb-lastname-suffix-re #[0 "\301\302!\303Q\207" [ebdb-lastname-suffixes "[-,. /\\]+\\(" regexp-opt "\\.?\\)\\W*\\'"] 3] "Regexp matching the suffix of a last name.\nIts first parenthetical subexpression becomes the suffix." ebdb-allow-duplicates #[0 "\300\207" [nil] 1] "When non-nil EBDB allows records with duplicate names and email addresses.\nIn rare cases, this may lead to confusion with EBDB's MUA interface." ebdb-address-label-list #[0 "\300\207" [("home" "work" "other")] 1] "List of labels for Address field." (repeat string) ebdb-phone-label-list #[0 "\300\207" [("home" "work" "cell" "fax" "other")] 1] "List of labels for Phone field." (repeat string) ebdb-default-country #[0 "\300\207" [#1="Emacs"] 1 #1#] "Default country to use if none is specified." (choice (const :tag "None" nil) (string :tag "Default Country")) ebdb-default-user-field #[0 "\300\207" [ebdb-field-notes] 1] "Default field when editing EBDB records." (symbol :tag "Field") ebdb-url-valid-schemes #[0 "\300\207" [("http:" "https:" "irc:")] 1] "Strings matching acceptable URL schemes.\nStrings should not be regular expressions. They should include\nthe colon character." (repeat string) ebdb-mail-avoid-redundancy #[0 "\300\207" [nil] 1] "How to handle the name part of `ebdb-dwim-mail'.\n\nIf nil, always return both name and mail. If value is mail-only\nnever use full name. Other non-nil values mean do not use full\nname in mail address when same as mail." ebdb-sendmail (choice (const :tag "Allow redundancy" nil) (const :tag "Never use full name" mail-only) (const :tag "Avoid redundancy" t)) ebdb-complete-mail #[0 "\300\207" [t] 1] "If non-nil composition MUAs will complete EBDB contacts.\nCompletion takes place within mail headers that specify one or\nmore message recipients. A value of `capf' will add an EBDB\ncollection to `completion-at-point-functions'. Any other non-nil\nvalue will override \"TAB\" to call `ebdb-complete-mail'." (choice (const :tag "Use `ebdb-complete-mail'" t) (const :tag "Do not complete mail addresses" nil) (const :tag "Use completion at point" capf)) ebdb-completion-list #[0 "\300\207" [t] 1] "Controls the behaviour of function `ebdb-complete-mail'.\nIf a list of symbols, it specifies which fields to complete. Symbols include\n name (= record's display name)\n alt-names (= any other names the record has)\n organization\n mail (= all email addresses of each record)\n primary (= first email address of each record)\nIf t, completion is done for all of the above.\nIf nil, no completion is offered." (choice (const :tag "No Completion" nil) (const :tag "Complete across all fields" t) (repeat :tag "Field" (choice (const name) (const alt-names) (const organization) (const primary) (const mail)))) ebdb-complete-mail-allow-cycling #[0 "\300\207" [5] 1] "If non-nil, cycle mail addresses when completing mails.\nIf `ebdb-complete-mail' is set to `capf', this option can be set\nto an integer number, specifying that completion should take\nplace when there are that many completion candidates or fewer.\nOtherwise, cycling will take place among all a single contact's\nemail addresses." (choice (const :tag "Never cycle" nil) (const :tag "Always cycle" t) (number :tag "Cycle for this many candidates or fewer")) ebdb-complete-mail-hook #[0 "\300\207" [nil] 1] "List of functions called after a successful completion." hook ebdb-mail-abbrev-expand-hook #[0 "\300\207" [nil] 1] "Function (not hook) run each time an alias is expanded.\nThe function is called with two args: the alias and the list of\ncorresponding mail addresses." ebdb-completion-display-record #[0 "\300\207" [t] 1] "If non-nil, `ebdb-complete-mail' will display records after completion." (choice (const :tag "Update the EBDB buffer" t) (const :tag "Do not update the EBDB buffer" nil))] 8) #@282 If non-nil update unchanged records in the database. Normally calls of `ebdb-change-hook' and updating of a record are suppressed, if an editing command did not really change the record. Bind this to t if you want to call `ebdb-change-hook' and update the record unconditionally. (defvar ebdb-update-unchanged-records nil (#$ . 27420)) #@32 List of streets known to EBDB. (defvar ebdb-street-list nil (#$ . 27763)) #@53 List of localities (towns or cities) known to EBDB. (defvar ebdb-locality-list nil (#$ . 27843)) #@54 List of regions (states or provinces) known to EBDB. (defvar ebdb-region-list nil (#$ . 27946)) #@35 List of post codes known to EBDB. (defvar ebdb-postcode-list nil (#$ . 28048)) (byte-code "\300\301\302\"\210\300\303\304\301#\210\300\305\306\301#\210\300\307\310\301#\210\300\311\312\301#\210\300\313\314\301#\210\300\315\316\301#\210\300\317\320\301#\210\300\321\322\301#\207" [define-error ebdb-error "EBDB error" ebdb-duplicate-uuid "Duplicate EBDB UUID" ebdb-related-unfound "Could not find related record" ebdb-unsynced-db "EBDB DB unsynced" ebdb-disabled-db "EBDB DB disabled" ebdb-readonly-db "EBDB DB read-only" ebdb-unacceptable-field "EBDB record cannot accept field" ebdb-empty "Empty value" ebdb-unparseable "Unparseable value"] 4) #@270 Return a list of all EBDB records; load databases if necessary. This function also notices if databases are out of sync. If RECORD-CLASS is given, only return records of this class or, if CHILD-P is non-nil, one of its subclasses. (fn &optional RECORD-CLASS CHILD-P) (defalias 'ebdb-records #[512 "\204\302 \210\203\303\304\305\306\307\310\"\311\"\312\313% \"\207 \207" [ebdb-db-list ebdb-record-tracker ebdb-load seq-filter make-byte-code 257 "\301\203 \302\300\"\207\303\300\"\207" vconcat vector [object-of-class-p same-class-p] 4 "\n\n(fn R)"] 10 (#$ . 28700)]) (put 'ebdb-records 'byte-optimizer 'byte-compile-inline-expand) #@80 Repeatedly execute BODY ignoring errors till no error occurs. (fn &rest BODY) (defalias 'ebdb-error-retry '(macro . #[128 "\300\301\302\303\304\305\306\307\310 BE\311BBBEE\207" [catch '--ebdb-error-retry-- while t condition-case --c-- throw '--ebdb-error-retry-- progn ((ebdb-unparseable (ding) (message "Error: %s" (nth 1 --c--)) (sit-for 2)))] 11 (#$ . 29351)])) #@73 Execute BODY, returning nil on quit or an empty value. (fn &rest BODY) (defalias 'ebdb-with-exit '(macro . #[128 "\300\301\302\303\"BB\207" [condition-case nil append (((quit ebdb-empty) nil))] 6 (#$ . 29724)])) #@172 Repeat BODY, accumulating the results in a list. \Return when the user either hits \[keyboard-quit], or enters an empty field value. (fn &rest BODY) (defalias 'ebdb-loop-with-exit '(macro . #[128 "\300\301\302\303\304\305\306\307\310\311\n\312\"BE\313BBBEE\207" [let (acc) catch '--ebdb-loop-exit-- condition-case nil while t push append (acc) (((quit ebdb-empty) (throw '--ebdb-loop-exit-- (nreverse acc))))] 13 (#$ . 29945)])) #@221 Excecute BODY just like `progn' with debugging capability. Debugging is enabled if variable `ebdb-debug' is non-nil during compile. You really should not disable debugging. But it will speed things up. (fn &rest BODY) (defalias 'ebdb-debug '(macro . #[128 "\205 \301\302BB\207" [ebdb-debug let ((debug-on-error t))] 4 (#$ . 30404)])) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-debug lisp-indent-function 0] 4) #@151 Add ELEMENT to the value of LIST-VAR if it isn't there yet and non-nil. The test for presence of ELEMENT is done with `equal'. (fn LIST-VAR ELEMENT) (defalias 'ebdb-add-to-list #[514 "\211\205\211\235\203\202\211B\211\262\207" [] 4 (#$ . 30841)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-add-to-list compiler-macro ebdb-add-to-list--inliner] 4) #@38 (fn INLINE--FORM LIST-VAR ELEMENT) (defalias 'ebdb-add-to-list--inliner #[771 "\3002\301\302\303\304\305D\257E0\207" [inline--just-use when cl-pushnew :test function equal] 11 (#$ . 31220)]) #@106 Remove ELEMENT from LIST-VAR, if present. Test for presence is done with `equal'. (fn LIST-VAR ELEMENT) (defalias 'ebdb-remove-from-list #[514 "\211\205\205\300\"\211\262\207" [delete] 5 (#$ . 31426)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-remove-from-list compiler-macro ebdb-remove-from-list--inliner] 4) #@38 (fn INLINE--FORM LIST-VAR ELEMENT) (defalias 'ebdb-remove-from-list--inliner #[771 "\3002\301\302E\303\304EEE0\207" [inline--just-use when and setf delete] 10 (#$ . 31768)]) #@76 compiler-macro for inlining `ebdb-record-cache-p'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-p--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-p (and (memq (type-of cl-x) cl-struct-ebdb-record-cache-tags) t)) nil] 9 (#$ . 31958)]) (put 'ebdb-record-cache-p 'compiler-macro 'ebdb-record-cache-p--cmacro) #@13 (fn CL-X) (defalias 'ebdb-record-cache-p #[257 "\301!>\205 \302\207" [cl-struct-ebdb-record-cache-tags type-of t] 3 (#$ . 32335)]) (byte-code "\300\301\302\303#\304\305\306\301#\207" [function-put ebdb-record-cache-p side-effect-free error-free put ebdb-record-cache cl-deftype-satisfies] 5) #@86 compiler-macro for inlining `ebdb-record-cache-name-string'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-name-string--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-name-string (or (ebdb-record-cache-p cl-x) (signal 'wrong-type-argument (list 'ebdb-record-cache cl-x))) (aref cl-x 1)) nil] 9 (#$ . 32638)]) (put 'ebdb-record-cache-name-string 'compiler-macro 'ebdb-record-cache-name-string--cmacro) #@74 Access slot "name-string" of `ebdb-record-cache' struct CL-X. (fn CL-X) (defalias 'ebdb-record-cache-name-string #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-ebdb-record-cache-tags type-of signal wrong-type-argument ebdb-record-cache 1] 5 (#$ . 33109)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-cache-name-string side-effect-free t] 4) #@84 compiler-macro for inlining `ebdb-record-cache-alt-names'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-alt-names--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-alt-names (or (ebdb-record-cache-p cl-x) (signal 'wrong-type-argument (list 'ebdb-record-cache cl-x))) (aref cl-x 2)) nil] 9 (#$ . 33498)]) (put 'ebdb-record-cache-alt-names 'compiler-macro 'ebdb-record-cache-alt-names--cmacro) #@72 Access slot "alt-names" of `ebdb-record-cache' struct CL-X. (fn CL-X) (defalias 'ebdb-record-cache-alt-names #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-ebdb-record-cache-tags type-of signal wrong-type-argument ebdb-record-cache 2] 5 (#$ . 33959)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-cache-alt-names side-effect-free t] 4) #@88 compiler-macro for inlining `ebdb-record-cache-organizations'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-organizations--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-organizations (or (ebdb-record-cache-p cl-x) (signal 'wrong-type-argument (list 'ebdb-record-cache cl-x))) (aref cl-x 3)) nil] 9 (#$ . 34342)]) (put 'ebdb-record-cache-organizations 'compiler-macro 'ebdb-record-cache-organizations--cmacro) #@76 Access slot "organizations" of `ebdb-record-cache' struct CL-X. (fn CL-X) (defalias 'ebdb-record-cache-organizations #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-ebdb-record-cache-tags type-of signal wrong-type-argument ebdb-record-cache 3] 5 (#$ . 34823)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-cache-organizations side-effect-free t] 4) #@83 compiler-macro for inlining `ebdb-record-cache-mail-aka'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-mail-aka--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-mail-aka (or (ebdb-record-cache-p cl-x) (signal 'wrong-type-argument (list 'ebdb-record-cache cl-x))) (aref cl-x 4)) nil] 9 (#$ . 35218)]) (put 'ebdb-record-cache-mail-aka 'compiler-macro 'ebdb-record-cache-mail-aka--cmacro) #@71 Access slot "mail-aka" of `ebdb-record-cache' struct CL-X. (fn CL-X) (defalias 'ebdb-record-cache-mail-aka #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-ebdb-record-cache-tags type-of signal wrong-type-argument ebdb-record-cache 4] 5 (#$ . 35674)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-cache-mail-aka side-effect-free t] 4) #@85 compiler-macro for inlining `ebdb-record-cache-mail-canon'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-mail-canon--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-mail-canon (or (ebdb-record-cache-p cl-x) (signal 'wrong-type-argument (list 'ebdb-record-cache cl-x))) (aref cl-x 5)) nil] 9 (#$ . 36054)]) (put 'ebdb-record-cache-mail-canon 'compiler-macro 'ebdb-record-cache-mail-canon--cmacro) #@73 Access slot "mail-canon" of `ebdb-record-cache' struct CL-X. (fn CL-X) (defalias 'ebdb-record-cache-mail-canon #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-ebdb-record-cache-tags type-of signal wrong-type-argument ebdb-record-cache 5] 5 (#$ . 36520)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-cache-mail-canon side-effect-free t] 4) #@82 compiler-macro for inlining `ebdb-record-cache-sortkey'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-sortkey--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-sortkey (or (ebdb-record-cache-p cl-x) (signal 'wrong-type-argument (list 'ebdb-record-cache cl-x))) (aref cl-x 6)) nil] 9 (#$ . 36906)]) (put 'ebdb-record-cache-sortkey 'compiler-macro 'ebdb-record-cache-sortkey--cmacro) #@70 Access slot "sortkey" of `ebdb-record-cache' struct CL-X. (fn CL-X) (defalias 'ebdb-record-cache-sortkey #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-ebdb-record-cache-tags type-of signal wrong-type-argument ebdb-record-cache 6] 5 (#$ . 37357)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-cache-sortkey side-effect-free t] 4) #@84 compiler-macro for inlining `ebdb-record-cache-databases'. (fn CL-WHOLE-ARG CL-X) (defalias 'ebdb-record-cache-databases--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block ebdb-record-cache-databases (or (ebdb-record-cache-p cl-x) (signal 'wrong-type-argument (list 'ebdb-record-cache cl-x))) (aref cl-x 7)) nil] 9 (#$ . 37734)]) (put 'ebdb-record-cache-databases 'compiler-macro 'ebdb-record-cache-databases--cmacro) #@72 Access slot "databases" of `ebdb-record-cache' struct CL-X. (fn CL-X) (defalias 'ebdb-record-cache-databases #[257 "\301!>\204\302\303\304D\"\210\211\305H\207" [cl-struct-ebdb-record-cache-tags type-of signal wrong-type-argument ebdb-record-cache 7] 5 (#$ . 38195)]) (byte-code "\300\301\302\303#\304\305\306\"\207" [function-put ebdb-record-cache-databases side-effect-free t defalias copy-ebdb-record-cache copy-sequence] 4) #@159 compiler-macro for inlining `make-ebdb-record-cache'. (fn CL-WHOLE &cl-quote &key NAME-STRING ALT-NAMES ORGANIZATIONS MAIL-AKA MAIL-CANON SORTKEY DATABASES) (defalias 'make-ebdb-record-cache--cmacro #[385 "\300\301\"\206\302A@\300\303\"A@\300\304\"A@\300\305\"A@\300\306\"A@\300\307\"A@\300\310\"A@\211\203]\211@\311>\203E\211AA\262\2022\312 >A@\203T\313\262\2022\314\315@\"\210\2022\210\316\317\320\313\f\313\f\f\f\f\f\f\f&\f\207" [plist-member :name-string (nil "") :alt-names :organizations :mail-aka :mail-canon :sortkey :databases (:name-string :alt-names :organizations :mail-aka :mail-canon :sortkey :databases :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name-string :alt-names :organizations :mail-aka :mail-canon :sortkey :databases)" cl--defsubst-expand (name-string alt-names organizations mail-aka mail-canon sortkey databases) (cl-block make-ebdb-record-cache (record 'ebdb-record-cache name-string alt-names organizations mail-aka mail-canon sortkey databases))] 22 (#$ . 38635)]) (put 'make-ebdb-record-cache 'compiler-macro 'make-ebdb-record-cache--cmacro) #@139 Constructor for objects of type `ebdb-record-cache'. (fn &key NAME-STRING ALT-NAMES ORGANIZATIONS MAIL-AKA MAIL-CANON SORTKEY DATABASES) (defalias 'make-ebdb-record-cache #[128 "\300\301\"\206\302A@\300\303\"A@\300\304\"A@\300\305\"A@\300\306\"A@\300\307\"A@\300\310\"A@\211\203]\211@\311>\203E\211AA\262\2022\312 >A@\203T\313\262\2022\314\315@\"\210\2022\210\316\317&\207" [plist-member :name-string (nil "") :alt-names :organizations :mail-aka :mail-canon :sortkey :databases (:name-string :alt-names :organizations :mail-aka :mail-canon :sortkey :databases :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:name-string :alt-names :organizations :mail-aka :mail-canon :sortkey :databases)" record ebdb-record-cache] 17 (#$ . 39784)]) (byte-code "\300\301\302\303#\304\305\306\307\310\311\312\313\305\303& \210\314\315\316\317!\"\210\314\320\321\317!\"\210\314\322\320\"\210\323\322\324\325#\210\326\317\327\320#\330\317\311\331\332$\207" [function-put make-ebdb-record-cache side-effect-free t cl-struct-define ebdb-record-cache "Structure holding cached values for a record." cl-structure-object record nil ((cl-tag-slot) (name-string "" :type string :documentation "Canonical name string") (alt-names nil :type list :documentation "List of alternate names") (organizations nil :type list :documentation "List of related organization name strings") (mail-aka nil :type list :documentation "List of akas associated with mail addresses") (mail-canon nil :type list :documentation "List of all record's mail addresses") (sortkey nil :type string :documentation "String used for sorting record against other records") (databases nil :type list :documentation "List of database instances this record belongs to")) cl-struct-ebdb-record-cache-tags defalias ebdb-field-p eieio-make-class-predicate ebdb-field ebdb-field--eieio-childp eieio-make-child-predicate ebdb-field-child-p make-obsolete "use (cl-typep ... \\='ebdb-field) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal ((actions :type (list-of cons) :allocation :class :initform nil :documentation "A list of actions which this field can perform. Each list\n element is a cons of string name and function name.")) (:abstract t :documentation "Abstract class for EBDB fields.\n Subclass this to produce real field types.")] 11) #@68 You cannot create a new object of type `ebdb-field'. (fn &rest _) (defalias 'ebdb-field #[128 "\300\301!\207" [error "Class ebdb-field is abstract"] 3 (#$ . 42176)]) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-record-p eieio-make-class-predicate ebdb-record ebdb-record--eieio-childp eieio-make-child-predicate ebdb-record-child-p make-obsolete "use (cl-typep ... \\='ebdb-record) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eieio-instance-tracker) ((uuid :initarg :uuid :type (or null ebdb-field-uuid) :initform nil) (tracking-symbol :initform ebdb-record-tracker) (creation-date :initarg :creation-date :type (or null ebdb-field-creation-date) :initform nil) (timestamp :initarg :timestamp :type (or null ebdb-field-timestamp) :initform nil) (fields :initarg :fields :type (list-of ebdb-field-user) :initform nil :documentation "This slot contains all record fields except\n those built in to record subclasses.") (image :initarg :image :type (or null ebdb-field-image) :initform nil) (notes :initarg :notes :type (or null ebdb-field-notes) :initform nil :documentation "User notes for this contact.") (dirty :initarg :dirty :type boolean :initform nil :documentation "Does this record have changed fields?") (cache :initarg :cache :type (or null ebdb-record-cache) :initform nil)) (:abstract t :allow-nil-initform t :documentation "An abstract base class for creating EBDB\n records.")] 6) #@69 You cannot create a new object of type `ebdb-record'. (fn &rest _) (defalias 'ebdb-record #[128 "\300\301!\207" [error "Class ebdb-record is abstract"] 3 (#$ . 43729)]) #@64 Record cache function: return RECORD's databases. (fn RECORD) (defalias 'ebdb-record-databases #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7] 6 (#$ . 43905)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-databases compiler-macro ebdb-record-databases--inliner] 4) #@28 (fn INLINE--FORM RECORD) (defalias 'ebdb-record-databases--inliner #[514 "\3002 \301\302\303\304DED0\207" [inline--just-use ebdb-record-cache-databases slot-value quote cache] 7 (#$ . 44323)]) #@65 Record cache function: return mail-aka for RECORD. (fn RECORD) (defalias 'ebdb-record-mail-aka #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 4] 6 (#$ . 44526)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-mail-aka compiler-macro ebdb-record-mail-aka--inliner] 4) #@28 (fn INLINE--FORM RECORD) (defalias 'ebdb-record-mail-aka--inliner #[514 "\3002 \301\302\303\304DED0\207" [inline--just-use ebdb-record-cache-mail-aka slot-value quote cache] 7 (#$ . 44942)]) #@73 Record cache function: return all RECORD's mail addresses. (fn RECORD) (defalias 'ebdb-record-mail-canon #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 5] 6 (#$ . 45143)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-mail-canon compiler-macro ebdb-record-mail-canon--inliner] 4) #@28 (fn INLINE--FORM RECORD) (defalias 'ebdb-record-mail-canon--inliner #[514 "\3002 \301\302\303\304DED0\207" [inline--just-use ebdb-record-cache-mail-canon slot-value quote cache] 7 (#$ . 45573)]) #@76 Record cache function: return all RECORD's alternative names. (fn RECORD) (defalias 'ebdb-record-alt-names #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 2] 6 (#$ . 45778)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-alt-names compiler-macro ebdb-record-alt-names--inliner] 4) #@28 (fn INLINE--FORM RECORD) (defalias 'ebdb-record-alt-names--inliner #[514 "\3002 \301\302\303\304DED0\207" [inline--just-use ebdb-record-cache-alt-names slot-value quote cache] 7 (#$ . 46208)]) #@71 Record cache function: return RECORD's name as a string. (fn RECORD) (defalias 'ebdb-record-name-string #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1] 6 (#$ . 46411)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-name-string compiler-macro ebdb-record-name-string--inliner] 4) #@28 (fn INLINE--FORM RECORD) (defalias 'ebdb-record-name-string--inliner #[514 "\3002 \301\302\303\304DED0\207" [inline--just-use ebdb-record-cache-name-string slot-value quote cache] 7 (#$ . 46842)]) #@95 Record cache function: return RECORD's organizations. Returns a list of strings. (fn RECORD) (defalias 'ebdb-record-organizations #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 3] 6 (#$ . 47049)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-organizations compiler-macro ebdb-record-organizations--inliner] 4) #@28 (fn INLINE--FORM RECORD) (defalias 'ebdb-record-organizations--inliner #[514 "\3002 \301\302\303\304DED0\207" [inline--just-use ebdb-record-cache-organizations slot-value quote cache] 7 (#$ . 47510)]) #@69 Record cache function: return RECORD's string sortkey. (fn RECORD) (defalias 'ebdb-record-sortkey #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 6] 6 (#$ . 47721)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-sortkey compiler-macro ebdb-record-sortkey--inliner] 4) #@28 (fn INLINE--FORM RECORD) (defalias 'ebdb-record-sortkey--inliner #[514 "\3002 \301\302\303\304DED0\207" [inline--just-use ebdb-record-cache-sortkey slot-value quote cache] 7 (#$ . 48138)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\306\311\304\312\304\313%\210\306\311\304\314\304\315%\210\306\311\304\316\304\317%\210\300\320\302\320\321\304#\322#\210\306\320\323\324\325\326%\210\306\320\304\327\304\330%\210\306\320\331\332\304\333%\210\300\334\302\334\335\304#\336#\210\306\334\304\337\304\340%\210\306\334\304\341\304\342%\210\306\343\304\344\304\345%\210\300\346\302\346\347\304#\350#\210\306\346\304\351\304\352%\210\306\346\353\354\325\355%\210\300\356\302\356\357\304#\360#\210\306\356\304\361\304\362%\210\306\363\304\364\304\365%\210\300\366\302\366\367\304#\370#\210\306\366\304\371\304\372%\210\300\373\302\373\374\304#\375#\210\306\373\304\376\304\377%\210\300\201@\201A\201B!\"\210\300\201C\201D\201B!\"\210\300\201E\201C\"\210\201F\201E\201G\201H#\210\201I\201B\201J\201C#\201K\201B\201L\201M\201N$\207" [defalias ebdb-init-field cl-generic-define (field record) nil "Initialize FIELD.\nWhat this means is entirely dependent upon the field class in\nquestion. Often it involves manipulating secondary data\nstructures such as label lists. If RECORD is given, it may also\ninvolve using FIELD as a hash value to get to RECORD.\n\n(fn FIELD RECORD)" cl-generic-define-method (_field-value _record) #[514 "\300\207" [t] 3 "Catch-all `ebdb-init-field' method for fields.\nThis method may also get called on field values that aren't\nactually `ebdb-field' instances -- for instance, plain strings.\nIn those cases, assume we don't need to do anything.\n\n(fn FIELD-VALUE RECORD)"] ebdb-field-readable-name ((field (subclass ebdb-field))) #[257 "\300!\301\211\302H>A\242\207" [find-class :human-readable 11] 6 "Return a human-readable string label for this class.\nMostly used for allowing users to pick which field type they want\nto add to a record.\n\n(fn FIELD)"] ((field ebdb-field)) #[257 "\300\301!!\207" [ebdb-field-readable-name eieio-object-class] 4 "\n\n(fn FIELD)"] ((_field (eql string))) #[257 "\300\207" ["Value"] 2 "\n\n(fn FIELD)"] ebdb-parse (field-class str &optional slots) "Attempt to construct an instance of FIELD-CLASS using STR.\nImplementations should extract information from STR and put it\ninto SLOTS, provided that SLOTS does not already contain relevant\nvalues (ie, parsing should not override what's already in SLOTS).\nThen call `cl-call-next-method' with the new values.\n\n(fn FIELD-CLASS STR &optional SLOTS)" (:around) (_field-class _str &optional _slots) t #[1027 "\300 \301\302\303\304\305!\306\"\307$\216 )\207" [match-data make-byte-code 0 "\301\300\302\"\207" vconcat vector [set-match-data evaporate] 3] 11 "\n\n(fn CL--CNM FIELD-CLASS STR &optional SLOTS)"] ((field-class (subclass ebdb-field)) str &optional slots) #[770 "\3001 \301\302#0\207\210\303\304C\"\207" [(error) apply make-instance signal ebdb-unparseable] 7 "Create the actual field instance.\n\n(fn FIELD-CLASS STR &optional SLOTS)"] (:before) ((_field-class (subclass ebdb-field)) str &optional _slots) #[770 "\203 \211\300\230\262\205\301\302\303C\"\207" [#1="" signal ebdb-empty "Empty string cannot be parsed"] 6 "\n\n(fn FIELD-CLASS STR &optional SLOTS)"] ebdb-delete-field (field &optional record unload) "Delete FIELD.\nOften involves un-hashing RECORD against the field value, or\nremoving labels from label lists.\n\nIf UNLOAD is true, it indicates that RECORD is only being\nunloaded, not actually deleted.\n\n(fn FIELD &optional RECORD UNLOAD)" ((field ebdb-field) &optional _record _unload) #[769 "\300!\207" [delete-instance] 5 "User-level deletion routine for FIELD.\nOverride this to do any necessary cleanup work after FIELD is\nremoved.\n\n(fn FIELD &optional RECORD UNLOAD)"] ((_field string) &optional _record _unload) #[769 "\300\207" [t] 4 "\n\n(fn FIELD &optional RECORD UNLOAD)"] delete-instance ((_field ebdb-field) &rest _args) #[385 "\300\207" [t] 3 "\n\n(fn FIELD &rest ARGS)"] ebdb-read (class &optional slots obj) "Prompt the user for values to create an instance of CLASS.\nSLOTS are a plist of slot values; OBJ is an optional existing\nobject of type CLASS, from which to draw default values during\nprompting.\n\n(fn CLASS &optional SLOTS OBJ)" ((class (subclass ebdb-field)) &optional slots _obj) #[769 "\300\301#\207" [apply make-instance] 7 "Complete the read/object creation process for a field of CLASS.\nEarlier subclasses of `ebdb-field' will have read all the\nnecessary values into SLOTS; this base method is simply\nresponsible for creating the field object.\n\nThe OBJ argument is used when editing existing fields: OBJ is the\nold field. By now we've sucked all the useful information out of\nit, and if this process is successful it will get deleted.\n\n(fn CLASS &optional SLOTS OBJ)"] (:around) ((_cls (subclass ebdb-field)) &optional _slots _obj) #[1026 " )\207" [ebdb-completion-ignore-case completion-ignore-case] 5 "\n\n(fn CL--CNM CLS &optional SLOTS OBJ)"] ebdb-string (obj) "Return a string representing OBJ.\n\n(fn OBJ)" ((str string)) #[257 "\207" [] 2 "\n\n(fn STR)"] ebdb-action ((field ebdb-field) record &optional idx) #[770 "\300\301\"\211\205\2038\206\302!\202\211@\211\205$\211A\"\207" [slot-value actions last] 8 "Perform an \"action\" from those listed in FIELD's action slot.\nIf IDX is provided, it is an index indicating which of the action\nfunctions to call. Otherwise, call the car of the list.\n\n(fn FIELD RECORD &optional IDX)"] ebdb-notice-field (field &optional type record) "\"Notice\" FIELD.\nThis means that a message involving RECORD has been viewed, or\nthat a MUA has otherwise decided that something significant to\nRECORD has taken place. It is up to the class of FIELD to decide\nwhat, if anything, to do about this.\n\nTYPE is a further indicator of how RECORD was noticed: in normal\nMUAs it is one of the symbols 'sender or 'recipient.\n\n(fn FIELD &optional TYPE RECORD)" ((_field ebdb-field) &optional _type _record) #[769 "\300\207" [nil] 4 "Ask FIELD of RECORD to react to RECORD being \"noticed\".\nWhen the user receives an email from or cc'd to RECORD, that\nrecord will call `ebdb-notice' on all its fields, and give them a\nchance to react somehow. TYPE is one of the symbols 'sender or\n'recipient, indicating which message header the record was found\nin.\n\n(fn FIELD &optional TYPE RECORD)"] ebdb-field-compare (field1 field2) "Return non-nil if FIELD1 should be sorted before FIELD2.\n\n(fn FIELD1 FIELD2)" (_field1 _field2) #[514 "\300\207" [nil] 3 "\n\n(fn FIELD1 FIELD2)"] ebdb-field-uuid-p eieio-make-class-predicate ebdb-field-uuid ebdb-field-uuid--eieio-childp eieio-make-child-predicate ebdb-field-uuid-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-uuid) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) ((uuid :type string :initarg :uuid :initform #1#)) (:human-readable "uuid")] 6) #@72 Create a new object of class type `ebdb-field-uuid'. (fn &rest SLOTS) (defalias 'ebdb-field-uuid #[128 "\300\301\302#\207" [apply make-instance ebdb-field-uuid] 5 (#$ . 55211)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-uuid compiler-macro ebdb-field-uuid--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-uuid--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 55514)]) (byte-code "\300\301\302\303\302\304%\210\305\306\307\310!\"\210\305\311\312\310!\"\210\305\313\311\"\210\314\313\315\316#\210\317\310\320\311#\321\310\302\322\323$\207" [cl-generic-define-method ebdb-string nil ((field ebdb-field-uuid)) #[257 "\300\301\"\207" [slot-value uuid] 4 "\n\n(fn FIELD)"] defalias ebdb-field-labeled-p eieio-make-class-predicate ebdb-field-labeled ebdb-field-labeled--eieio-childp eieio-make-child-predicate ebdb-field-labeled-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-labeled) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal ((label :initarg :label :custom (choice (const :tag "Empty" nil) string) :initform nil :documentation "String label") (label-list :initform nil :type (or null symbol) :allocation :class :documentation "This class-allocated slot points to a variable holding a\n list of known string labels for objects of the subclass.")) (:abstract t :documentation "A field with a string label.")] 6) #@76 You cannot create a new object of type `ebdb-field-labeled'. (fn &rest _) (defalias 'ebdb-field-labeled #[128 "\300\301!\207" [error "Class ebdb-field-labeled is abstract"] 3 (#$ . 56737)]) (byte-code "\300\301\302\303\304\305%\210\300\306\307\310\304\311%\210\300\312\307\313\307\314%\210\300\315\307\316\304\317%\210\320\321\322\323!\"\210\320\324\325\323!\"\210\320\326\324\"\210\327\326\330\331#\210\332\323\333\324#\334\323\335\307\336$\207" [cl-generic-define-method ebdb-read (:around) ((class (subclass ebdb-field-labeled)) &optional slots obj) t #[1026 "#\300\301\"J\302!\303\304\"\3051-\306;\203$\307\310\311!\"\202%\312\313$0\202/\210\313\262\211\203L\211\235\204D\314\307\315\"!\203L\316\304#\266\207" [eieio-oref-default label-list ebdb-field-readable-name slot-value label (quit ebdb-empty) ebdb-read-string format "%s label: " capitalize "Label: " nil yes-or-no-p "%s is not a known label, define it? " eieio-oset] 13 "Prompt for a label for a new object of class CLASS.\nOBJ is used as as a default, and the results are stored in SLOTS.\n\nAll subclasses of `ebdb-field-labeled' should have a 'label-list\nslot pointing to a var holding known labels for that class. This\nmethod checks that the label is known, and asks for confirmation\nif it isn't.\n\nThis method also signals the 'ebdb-empty error if the user gives\nan empty string as a label, which allows interruption of the read\nprocess.\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-init-field nil ((field ebdb-field-labeled) _record) #[771 "\300\301\"\300\302\"\203%\300\302\"\211J\235\203\211\202 B\262L\266 \207" [slot-value label-list label] 10 "Add FIELD's label to its class label list.\n\n(fn CL--CNM FIELD RECORD)"] ebdb-field-label ((field ebdb-field-labeled)) #[257 "\300\301\"\206\f\302\303!!\207" [slot-value label ebdb-field-readable-name eieio-object-class] 4 "Return a string label for FIELD.\n\n(fn FIELD)"] initialize-instance ((field ebdb-field-labeled) &optional slots) #[770 "\300\301\"\302\2031\203&@\301=\204\303@A@#\262AA\262\202 \2031\303\304#\262\2068\"\207" [plist-get :object-name nil plist-put :label] 9 "\n\n(fn CL--CNM FIELD &optional SLOTS)"] defalias ebdb-field-obfuscated-p eieio-make-class-predicate ebdb-field-obfuscated ebdb-field-obfuscated--eieio-childp eieio-make-child-predicate ebdb-field-obfuscated-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-obfuscated) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) (:abstract t :documentation "A field class mixin that prevents the contents from being\n displayed in the *EBDB* buffer. Use for mildly sensitive\n information.")] 6) #@79 You cannot create a new object of type `ebdb-field-obfuscated'. (fn &rest _) (defalias 'ebdb-field-obfuscated #[128 "\300\301!\207" [error "Class ebdb-field-obfuscated is abstract"] 3 (#$ . 59465)]) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-singleton-p eieio-make-class-predicate ebdb-field-singleton ebdb-field-singleton--eieio-childp eieio-make-child-predicate ebdb-field-singleton-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-singleton) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) nil (:abstract t :documentation "A field class mixin that ensures a record can only have one\n instance of that field class.")] 6) #@78 You cannot create a new object of type `ebdb-field-singleton'. (fn &rest _) (defalias 'ebdb-field-singleton #[128 "\300\301!\207" [error "Class ebdb-field-singleton is abstract"] 3 (#$ . 60268)]) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-user-p eieio-make-class-predicate ebdb-field-user ebdb-field-user--eieio-childp eieio-make-child-predicate ebdb-field-user-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-user) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) nil (:abstract t :documentation "Fields that should be user-editable, but need more complicated\n slot structures than the simple \"value\" provided by\n `ebdb-field-user-simple', can subclass this class. Any field\n class that subclasses this will be offered as a choice to the\n user when inserting new fields.")] 6) #@73 You cannot create a new object of type `ebdb-field-user'. (fn &rest _) (defalias 'ebdb-field-user #[128 "\300\301!\207" [error "Class ebdb-field-user is abstract"] 3 (#$ . 61235)]) (cl-generic-define-method 'ebdb-field-compare nil '((field1 ebdb-field-user) (field2 ebdb-field-user)) nil #[514 "\300\301!!\300\301!!\231\207" [symbol-name eieio-object-class-name] 6 "By default, order by field class.\n\n(fn FIELD1 FIELD2)"]) #@41 List of existing labels of user fields. (defvar ebdb-user-label-list nil (#$ . 61669)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-user-simple-p eieio-make-class-predicate ebdb-field-user-simple ebdb-field-user-simple--eieio-childp eieio-make-child-predicate ebdb-field-user-simple-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-user-simple) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field-user) ((label-list :initform ebdb-user-label-list) (value :initarg :value :type (or atom list) :initform "" :custom string :documentation "The value of this user-defined field.")) (:human-readable "user field")] 6) #@79 Create a new object of class type `ebdb-field-user-simple'. (fn &rest SLOTS) (defalias 'ebdb-field-user-simple #[128 "\300\301\302#\207" [apply make-instance ebdb-field-user-simple] 5 (#$ . 62470)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-user-simple compiler-macro ebdb-field-user-simple--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-user-simple--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 62808)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\311\312\313\314!\"\210\311\315\316\314!\"\210\311\317\315\"\210\320\317\321\322#\210\323\314\324\315#\325\314\326\302\327$\207" [cl-generic-define-method ebdb-string nil ((field ebdb-field-user-simple)) #[257 "\300\301\"\211;\203 \211\202\302\303\300\304\"!\"\207" [slot-value value ebdb-concat intern-soft label] 7 "\n\n(fn FIELD)"] ebdb-read ((class (subclass ebdb-field-user-simple)) &optional slots obj) t #[1026 "\300\301\"\204\211\205\302!\303\301\304\305\"#\262\210#\207" [plist-get :value ebdb-string plist-put ebdb-read-string "Value"] 11 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] defalias ebdb-field-name-p eieio-make-class-predicate ebdb-field-name ebdb-field-name--eieio-childp eieio-make-child-predicate ebdb-field-name-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-name) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) (:abstract t :documentation "Abstract base class for creating record\n names.")] 6) #@73 You cannot create a new object of type `ebdb-field-name'. (fn &rest _) (defalias 'ebdb-field-name #[128 "\300\301!\207" [error "Class ebdb-field-name is abstract"] 3 (#$ . 64117)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313\314!\"\210\311\315\316\314!\"\210\311\317\315\"\210\320\317\321\322#\210\323\314\324\315#\325\314\326\327\330$\207" [cl-generic-define-method ebdb-parse nil ((class (subclass ebdb-field-name)) str &optional slots) t #[1027 "\302\211\303\304\206\f\305\306Q\"\203\307\310\311\211$\266\202\202!\266\202\303\312\206)\305\313Q\"\203;\307\310\311\211$\266\205\202>\266\205\203J#\202g\314\302\311\303#)\266\203\203b\315 #\202g\315\316#\207" [inhibit-changing-match-data ebdb-default-name-class nil string-match "\\(?:" "[ \n ]+" "\\)\\'" replace-match #1="" t "\\`\\(?:" "\\)" "[[:space:]]" ebdb-parse ebdb-field-name-simple] 14 "Examine STR and try to interpret it as a name.\nThis method dispatches to the equivalent method of either the\nsimple or complex name class.\n\n(fn CL--CNM CLASS STR &optional SLOTS)"] cl-print-object ((name ebdb-field-name) stream) #[514 "\300\301\302\303!\304!#\"\207" [princ format "#<%S %s>" eieio-object-class-name ebdb-string] 8 "\n\n(fn NAME STREAM)"] defalias ebdb-field-name-simple-p eieio-make-class-predicate ebdb-field-name-simple ebdb-field-name-simple--eieio-childp eieio-make-child-predicate ebdb-field-name-simple-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-name-simple) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-name) ((name :type string :initarg :name :custom string :initform #1#)) (:documentation "A name class for \"simple\" names: ie plain\n strings." :human-readable "nickname")] 6) #@79 Create a new object of class type `ebdb-field-name-simple'. (fn &rest SLOTS) (defalias 'ebdb-field-name-simple #[128 "\300\301\302#\207" [apply make-instance ebdb-field-name-simple] 5 (#$ . 65922)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-name-simple compiler-macro ebdb-field-name-simple--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-name-simple--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 66260)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\300\311\302\312\307\313%\210\300\314\302\315\307\316%\210\300\317\302\320\307\321%\210\322\323\324\325!\"\210\322\326\327\325!\"\210\322\330\326\"\210\331\330\332\333#\210\334\325\335\326#\336\325\337\340\341$\207" [cl-generic-define-method ebdb-string nil ((name ebdb-field-name-simple)) #[257 "\300\301\"\207" [slot-value name] 4 "\n\n(fn NAME)"] ebdb-read ((class (subclass ebdb-field-name-simple)) &optional slots obj) t #[1026 "\300\301\205\n\302\303\"\"\304\305##\207" [ebdb-read-string "Name" slot-value name plist-put :name] 11 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-init-field ((name ebdb-field-name-simple) record) #[771 "\300\301!\"\210 \207" [ebdb-puthash ebdb-string] 6 "\n\n(fn CL--CNM NAME RECORD)"] ebdb-delete-field ((name ebdb-field-name-simple) record &optional _unload) #[1027 "\300\301!\"\210 \207" [ebdb-remhash ebdb-string] 7 "\n\n(fn CL--CNM NAME RECORD &optional UNLOAD)"] ebdb-parse ((class (subclass ebdb-field-name-simple)) str &optional slots) #[1027 "\300\301\"\204\302\301#\262#\207" [plist-get :name plist-put] 8 "\n\n(fn CL--CNM CLASS STR &optional SLOTS)"] defalias ebdb-field-name-complex-p eieio-make-class-predicate ebdb-field-name-complex ebdb-field-name-complex--eieio-childp eieio-make-child-predicate ebdb-field-name-complex-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-name-complex) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-name) ((surname :initarg :surname :type (or null string) :custom (choice (const :tag "No surname" nil) (string :tag "Surname")) :initform nil) (given-names :initarg :given-names :type (list-of string) :custom (repeat (string :tag "Name")) :initform nil) (prefix :initarg :prefix :type (or null string) :custom (choice (const :tag "No prefix" nil) (string :tag "Prefix")) :initform nil) (suffix :initarg :suffix :type (or null string) :custom (choice (const :tag "No suffix" nil) (string :tag "Suffix")) :initform nil) (affix :initarg :affix :type (or null string) :custom (choice (const :tag "No affix" nil) (string :tag "Affix")) :initform nil)) (:documentation "A name class for \"complex\", ie structured,\n names." :human-readable "alt name")] 6) #@80 Create a new object of class type `ebdb-field-name-complex'. (fn &rest SLOTS) (defalias 'ebdb-field-name-complex #[128 "\300\301\302#\207" [apply make-instance ebdb-field-name-complex] 5 (#$ . 68790)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-name-complex compiler-macro ebdb-field-name-complex--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-name-complex--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 69133)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\210\300\313\302\314\302\315%\210\300\316\302\317\302\320%\210\300\321\302\322\323\324%\210\300\325\302\326\323\327%\210\300\330\302\331\323\332%\210\300\333\302\334\323\335%\207" [cl-generic-define-method ebdb-name-last nil ((name ebdb-field-name-complex)) #[257 "\300\301\"\207" [slot-value surname] 4 "Return the surname of this name field.\n\n(fn NAME)"] ebdb-name-given ((name ebdb-field-name-complex) &optional full) #[513 "\300\301\"\211\205\203\302\303\304#\202\211@\207" [slot-value given-names mapconcat identity " "] 7 "Return the given names of this name field.\nIf FULL is t, return all the given names, otherwise just the\nfirst one.\n\n(fn NAME &optional FULL)"] ebdb-name-lf ((name ebdb-field-name-complex) &optional full) #[513 "\300\"\301\302\"\303!\205\205\304\305\"Q\207" [ebdb-name-given slot-value prefix ebdb-name-last format ", %s"] 9 "\n\n(fn NAME &optional FULL)"] ebdb-name-fl ((name ebdb-field-name-complex) &optional full) #[513 "\300\"\301\205\302\303\"\304\305\"\205\302\303\304\305\"\"\306!\304\307\"\205/\302\310\304\307\"\"R!\262\207" [ebdb-name-given ebdb-string-trim format "%s " slot-value prefix ebdb-name-last suffix ", %s"] 13 "\n\n(fn NAME &optional FULL)"] ebdb-string ((name ebdb-field-name-complex)) #[257 "\300\301\"\207" [ebdb-name-fl t] 4 "Produce a canonical string for NAME.\n\n(fn NAME)"] ebdb-init-field ((name ebdb-field-name-complex) record) t #[771 "\301\302\"\303\302\"\303!\304\"\210\304\"\210\304\"\210\203J\305\306\"\307!>\2042\310\311\312D\"\210\211\211\313\313H\235\203B\211\202EB\262I\266\203z\305\306\"\307!>\204b\310\311\312D\"\210\211\211\313\313H\235\203r\211\202uB\262I\266\211\203\252\211\305\306\"\307!>\204\222\310\311\312D\"\210\211\211\313\313H\235\203\242\211\202\245B\262I\266\266 \207" [cl-struct-ebdb-record-cache-tags ebdb-name-lf t ebdb-name-fl ebdb-puthash slot-value cache type-of signal wrong-type-argument ebdb-record-cache 2] 14 "\n\n(fn CL--CNM NAME RECORD)"] ebdb-delete-field ((name ebdb-field-name-complex) record &optional _unload) #[1027 "\301\302\"\303\302\"\303!\304\"\210\304\"\210\304\"\210\203r\305\306\"\307!>\2044\310\311\312D\"\210\211\313H\262\203r\305\306\"\307!>\204O\310\311\312D\"\210\211\211\313\314\305 \306\"\307!>\204i\310\311\312D\"\210\211\313H\262\"I\266\203\307\305\306\"\307!>\204\211\310\311\312D\"\210\211\313H\262\203\307\305\306\"\307!>\204\244\310\311\312D\"\210\211\211\313\314\305 \306\"\307!>\204\276\310\311\312D\"\210\211\313H\262\"I\266\211\203\305\306\"\307!>\204\336\310\311\312D\"\210\211\313H\262\203\305\306\"\307!>\204\371\310\311\312D\"\210\211\211\313\314\305 \306\"\307!>\204\310\311\312D\"\210\211\313H\262\"I\266\266 \207" [cl-struct-ebdb-record-cache-tags ebdb-name-lf t ebdb-name-fl ebdb-remhash slot-value cache type-of signal wrong-type-argument ebdb-record-cache 2 delete] 18 "\n\n(fn CL--CNM NAME RECORD &optional UNLOAD)"] ebdb-read ((class (subclass ebdb-field-name-complex)) &optional slots obj) #[1026 "\2037\211\205 \301!\205\302\303\"\304\305\"\304\306\"\307\310#\262\307\311\312!#\262#\207\313\304\314\205B\315!\"#\207" [ebdb-read-name-articulate ebdb-name-last ebdb-name-given t ebdb-read-string "Surname" "Given name(s)" plist-put :surname :given-names split-string ebdb-parse "Name" ebdb-string] 13 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-parse ((class (subclass ebdb-field-name-complex)) str &optional slots) #[1027 "\300!\211@A\211@A\211@A\301 \302\"\204#\303 \302#\262 \301 \304\"\2047\303 \304\2064\305#\262 \301 \306\"\204G\303 \306#\262     #\266\203\207" [ebdb-divide-name plist-member :given-names plist-put :surname "" :suffix] 18 "\n\n(fn CL--CNM CLASS STR &optional SLOTS)"]] 6) (defvar ebdb-role-label-list nil) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-role-p eieio-make-class-predicate ebdb-field-role ebdb-field-role--eieio-childp eieio-make-child-predicate ebdb-field-role-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-role) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field) ((label-list :initform ebdb-role-label-list) (record-uuid :initarg :record-uuid :type (or null string) :initform nil) (org-uuid :initarg :org-uuid :type (or null string) :initform nil) (mail :initarg :mail :type (or null ebdb-field-mail) :initform nil) (fields :initarg :fields :type (list-of ebdb-field) :initform nil) (defunct :initarg :defunct :type boolean :custom boolean :initform nil :documentation "If t, this role is considered defunct (ie\n the person left their job, etc). Fields in the \"fields\"\n slot will generally be ignored by the rest of EBDB.") (actions :initform '(("Display role relation" . ebdb-follow-related)))) (:documentation "This class represents a relationship between\n the record which owns this field, and the\n `ebdb-record-organization' pointed to by the \"organization\"\n slot. The \"mail\" slot holds the record's organizational\n email address. The \"fields\" slot holds whatever extra fields\n might be relevant to the role." :human-readable "role")] 6) #@72 Create a new object of class type `ebdb-field-role'. (fn &rest SLOTS) (defalias 'ebdb-field-role #[128 "\300\301\302#\207" [apply make-instance ebdb-field-role] 5 (#$ . 74864)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-role compiler-macro ebdb-field-role--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-role--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 75167)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\304\310%\210\300\311\302\312\304\313%\210\300\314\302\315\302\316%\210\317\320\321\322!\"\210\317\323\324\322!\"\210\317\325\323\"\210\326\325\327\330#\210\331\322\332\323#\333\322\334\335\336$\207" [cl-generic-define-method ebdb-init-field nil ((role ebdb-field-role) record) t #[771 "\302\303\304\"\"\305!\3061/\303\307\"\310\"\311! >\204&\312\313\314D\"\210\211\315H\2620\2021\210\316\303\317\"\204@\320\317#\266\211\203q\211\303\310\"\311! >\204Y\312\313\314D\"\210\211\211\321\321H\235\203i\211\202lB\262I\266\303\322\"\203\213\303\211\322\"\322\"\203\213\323\303\322\"\"\210\235\204\226B\262\324\303\304\"#\266 \207" [ebdb-org-hashtable cl-struct-ebdb-record-cache-tags gethash slot-value org-uuid ebdb-record-uuid (ebdb-related-unfound) ebdb-record-related cache type-of signal wrong-type-argument ebdb-record-cache 1 "record not loaded" record-uuid eieio-oset 3 mail ebdb-init-field puthash] 15 "\n\n(fn CL--CNM ROLE RECORD)"] ebdb-delete-field ((role ebdb-field-role) record &optional unload) #[1027 "\302\303\"\3041(\302\305\"\306\"\307!>\204\310\311\312D\"\210\211\313H\2620\202*\210\314\315 \"\316!\317\"\262\203E\320 #\210\202J\321 \"\210\203\257\322\323\324\"\"\204\257\203\257\302\306\"\307!>\204p\310\311\312D\"\210\211\325H\262\203\257\302\306\"\307!>\204\214\310\311\312D\"\210\211\211\325\317\302\f\306\"\307!>\204\246\310\311\312D\"\210\211\325H\262\"I\266\266\302\326\"\203\301\327\302\326\"#\210 \207" [cl-struct-ebdb-record-cache-tags ebdb-org-hashtable slot-value org-uuid (ebdb-related-unfound) ebdb-record-related cache type-of signal wrong-type-argument ebdb-record-cache 1 nil gethash ebdb-record-uuid delete puthash remhash assoc-string object-assoc-list record-uuid 3 mail ebdb-delete-field] 19 "\n\n(fn CL--CNM ROLE RECORD &optional UNLOAD)"] ebdb-read ((role (subclass ebdb-field-role)) &optional slots obj) #[1026 "\301\302\"\206\211\203\303\304\"\202\305\306\307\310\"!\301\311\"\2065\31213\313\307\205.\303\314\"#0\2025\210\307\211\203@\315\311#\262\315\302#\262#\207" [ebdb-default-mail-class plist-get :org-uuid slot-value org-uuid ebdb-record-uuid ebdb-prompt-for-record nil ebdb-record-organization :mail (quit ebdb-empty) ebdb-read mail plist-put] 11 "\n\n(fn CL--CNM ROLE &optional SLOTS OBJ)"] ebdb-string ((role ebdb-field-role)) #[257 "\301\302\303\"\304\"\3051*\302\306\"\307\"\310!>\204!\311\312\313D\"\210\211\314H\2620\202,\210\315\207" [cl-struct-ebdb-record-cache-tags ebdb-gethash slot-value record-uuid uuid (ebdb-related-unfound) ebdb-record-related cache type-of signal wrong-type-argument ebdb-record-cache 1 "record not loaded"] 7 "Display a string for this ROLE.\n\n(fn ROLE)"] defalias ebdb-field-mail-p eieio-make-class-predicate ebdb-field-mail ebdb-field-mail--eieio-childp eieio-make-child-predicate ebdb-field-mail-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-mail) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) ((aka :initarg :aka :type (or null string) :custom (choice (const :tag "None" nil) (string :tag "Mail AKA")) :initform nil :documentation "Alternate contact name for this address.") (mail :initarg :mail :type string :custom string :initform "" :documentation "Email address") (priority :initarg :priority :type (or null symbol) :initform normal :custom (choice (const :tag "Normal priority" normal) (const :tag "Primary address" primary) (const :tag "Defunct address" defunct)) :documentation "The priority of this email address. The symbol 'normal means\n normal priority, 'defunct means the address will not be\n offered for completion, and 'primary means this address will\n be used as the default. Only one of a record's addresses can\n be set to 'primary.") (actions :initform '(("Compose mail" . ebdb-field-mail-compose)))) (:documentation "A field representing a single email address." :human-readable "mail")] 6) #@72 Create a new object of class type `ebdb-field-mail'. (fn &rest SLOTS) (defalias 'ebdb-field-mail #[128 "\300\301\302#\207" [apply make-instance ebdb-field-mail] 5 (#$ . 79477)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-mail compiler-macro ebdb-field-mail--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-mail--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 79780)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\300\311\302\312\302\313%\210\300\314\302\315\307\316%\210\300\317\302\320\307\321%\210\300\322\302\323\302\324%\210\300\325\302\326\302\327%\210\330\331\332\333!\"\210\330\334\335\333!\"\210\330\336\334\"\210\337\336\340\341#\210\342\333\343\334#\344\333\345\346\347$\210\300\350\302\351\302\352%\210\300\353\302\354\302\355%\210\300\356\302\357\302\360%\210\300\361\302\362\302\363%\210\300\364\302\365\302\366%\210\300\367\302\370\302\371%\210\300\372\302\373\302\374%\210\300\375\302\376\302\377%\210\300\201@\302\201A\302\201B%\210\300\201C\302\201D\302\201E%\207" [cl-generic-define-method ebdb-init-field nil ((field ebdb-field-mail) record) #[514 "\302\303\304\"\"\210\303\304\"\203?\303\304\"\303\305\"\306!>\204'\307\310\311D\"\210\211\211\312\312H\235\2037\211\202:B\262I\266\313\"\203Z\313\"\211 \235\203T \202W\211 B\262\303\314\"\205\243\302\303\314\"\"\210\303\314\"\205\243\303\314\"\303\305\"\306!>\204\207\307\310\311D\"\210\211\211\315\315H\235\203\227\211\202\232B\262I\262\262\262\207" [cl-struct-ebdb-record-cache-tags ebdb-dwim-completion-cache ebdb-puthash slot-value mail cache type-of signal wrong-type-argument ebdb-record-cache 5 ebdb-dwim-mail aka 4] 11 "\n\n(fn FIELD RECORD)"] ebdb-delete-field ((field ebdb-field-mail) record &optional _unload) t #[1027 "\302\303\"\203k\304\302\303\"\"\210\302\303\"\203k\302\305\"\306!>\204*\307\310\311D\"\210\211\312H\262\203k\302\305\"\306!>\204E\307\310\311D\"\210\211\211\312\313\302\303\"\302 \305\"\306!>\204b\307\310\311D\"\210\211\312H\262\"I\266\313\314\" \"\304\302\315\"\"\210\302\315\"\203\327\302\305\"\306!>\204\226\307\310\311D\"\210\211\316H\262\203\327\302\305\"\306!>\204\261\307\310\311D\"\210\211\211\316\313\302\315\"\302 \305\"\306!>\204\316\307\310\311D\"\210\211\316H\262\"I\266\210 \207" [cl-struct-ebdb-record-cache-tags ebdb-dwim-completion-cache slot-value aka ebdb-remhash cache type-of signal wrong-type-argument ebdb-record-cache 4 delete ebdb-dwim-mail mail 5] 16 "\n\n(fn CL--CNM FIELD RECORD &optional UNLOAD)"] ebdb-string ((mail ebdb-field-mail)) #[257 "\211\300\301\"\203\300\301\"\302\300\303\"\304R\202\300\303\"\207" [slot-value aka " <" mail ">"] 7 "\n\n(fn MAIL)"] ebdb-read ((class (subclass ebdb-field-mail)) &optional slots obj) #[1026 "\211\205\300!\301\302\"\303!\211A@@\203\304\305@#\262\304\306#\262\2037\304\307\310\311\"#\262#\207" [ebdb-string ebdb-read-string "Mail address" ebdb-decompose-ebdb-address plist-put :aka :mail :priority slot-value priority] 14 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-parse ((class (subclass ebdb-field-mail)) (str string) &optional slots) #[1027 "\300!\211@A\211@A\204\301\302\nC\"\210\303\304\"\204(\305\304#\262\303\306\"\2048\305\306#\262\n\n\n\n#\266\202\207" [ebdb-decompose-ebdb-address signal ebdb-unparseable plist-get :mail plist-put :aka] 15 "Parse STR as though it were a mail field.\n\n(fn CL--CNM CLASS STR &optional SLOTS)"] ebdb-field-compare ((m-left ebdb-field-mail) (m-right ebdb-field-mail)) #[514 "\300\301\"\300\301\"\211\302>\203\303=\206\211\304=\205\305=\207" [slot-value priority (normal defunct) primary defunct normal] 6 "Sort M-LEFT and M-RIGHT by their priority slot.\nPrimary sorts before normal sorts before defunct.\n\n(fn M-LEFT M-RIGHT)"] cl-print-object ((mail ebdb-field-mail) stream) #[514 "\300\301\302\303!\304\305\"#\"\207" [princ format "#<%S %s>" eieio-object-class-name slot-value mail] 9 "\n\n(fn MAIL STREAM)"] defalias ebdb-field-address-p eieio-make-class-predicate ebdb-field-address ebdb-field-address--eieio-childp eieio-make-child-predicate ebdb-field-address-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-address) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field) ((label-list :initform ebdb-address-label-list) (streets :initarg :streets :type (list-of string) :initform nil :custom (repeat string) :accessor ebdb-address-streets :documentation "A list of strings representing the street address(es).") (locality :initarg :locality :type string :initform #1="" :custom string :accessor ebdb-address-locality :documentation "City, town, village, etc.") (region :initarg :region :type string :initform #1# :custom string :accessor ebdb-address-region :documentation "State, province, region, etc.") (postcode :initarg :postcode :type string :initform #1# :custom string :accessor ebdb-address-postcode) (country :initarg :country :type (or string symbol) :initform #1# :custom (choice (symbol) (string)) :accessor ebdb-address-country :documentation "Country, represented either by a symbol (see ebdb-i18n.el) or a string.")) (:documentation "A field representing an address." :human-readable "address") ebdb-address-country ((this ebdb-field-address)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp country eieio-oref] 4 "Retrieve the slot `country' from an object of class `ebdb-field-address'.\n\n(fn THIS)"] \(setf\ ebdb-address-country\) (value (this ebdb-field-address)) #[514 "\300\301#\207" [eieio-oset country] 6 "\n\n(fn VALUE THIS)"] ebdb-address-postcode ((this ebdb-field-address)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp postcode eieio-oref] 4 "Retrieve the slot `postcode' from an object of class `ebdb-field-address'.\n\n(fn THIS)"] \(setf\ ebdb-address-postcode\) (value (this ebdb-field-address)) #[514 "\300\301#\207" [eieio-oset postcode] 6 "\n\n(fn VALUE THIS)"] ebdb-address-region ((this ebdb-field-address)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp region eieio-oref] 4 "Retrieve the slot `region' from an object of class `ebdb-field-address'.\n\n(fn THIS)"] \(setf\ ebdb-address-region\) (value (this ebdb-field-address)) #[514 "\300\301#\207" [eieio-oset region] 6 "\n\n(fn VALUE THIS)"] ebdb-address-locality ((this ebdb-field-address)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp locality eieio-oref] 4 "Retrieve the slot `locality' from an object of class `ebdb-field-address'.\n\n(fn THIS)"] \(setf\ ebdb-address-locality\) (value (this ebdb-field-address)) #[514 "\300\301#\207" [eieio-oset locality] 6 "\n\n(fn VALUE THIS)"] ebdb-address-streets ((this ebdb-field-address)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp streets eieio-oref] 4 "Retrieve the slot `streets' from an object of class `ebdb-field-address'.\n\n(fn THIS)"] \(setf\ ebdb-address-streets\) (value (this ebdb-field-address)) #[514 "\300\301#\207" [eieio-oset streets] 6 "\n\n(fn VALUE THIS)"]] 7) #@75 Create a new object of class type `ebdb-field-address'. (fn &rest SLOTS) (defalias 'ebdb-field-address #[128 "\300\301\302#\207" [apply make-instance ebdb-field-address] 5 (#$ . 86730)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-address compiler-macro ebdb-field-address--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-address--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 87048)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\207" [cl-generic-define-method ebdb-init-field nil ((address ebdb-field-address) _record) #[514 "\305\306\"\211\203$\211@\211\203\211\235\203\202\211BA\266\202\202\210\305\307\"\203@\305\307\" \235\2039 \202?\305\307\" B\305\310\";\203c\305\310\"\203c\305\310\"\n\235\203\\\n\202b\305\310\"\nB\305\311\"\203~\305\311\" \235\203w \202}\305\311\" B\305\312\"\205\232\305\312\"\f\235\203\222\f\202\230\305\312\"\fB\211\207" [ebdb-street-list ebdb-locality-list ebdb-country-list ebdb-region-list ebdb-postcode-list slot-value streets locality country region postcode] 7 "\n\n(fn ADDRESS RECORD)"] ebdb-read ((class (subclass ebdb-field-address)) &optional slots obj) t #[1026 "\305\306\"\203\307\306\"\202\310\205\311!!\305\312\"\203%\307\312\"\2020\313\314\205.\315!#\305\316\"\203>\307\316\"\202I\313\317\205G\320! #\305\321\"\203W\307\321\"\202c\313\322\205a\323!\n#\305\324\"\203s\307\324\"\202\205\313\325\203\202\326\327\"\202\203 \f#\306\312\330\307\330\"\316 \321\f\324 \257\f#\207" [ebdb-locality-list ebdb-region-list ebdb-postcode-list ebdb-default-country ebdb-country-list plist-member :streets plist-get ebdb-edit-address-street ebdb-address-streets :locality ebdb-read-string "Town/City" ebdb-address-locality :region "State/Province" ebdb-address-region :postcode "Postcode" ebdb-address-postcode :country "Country" slot-value country :label] 23 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"]] 6) #@34 Edit list STREETS. (fn STREETS) (defalias 'ebdb-edit-address-street #[257 "\301\302\211\3031!\304\305\306T\"8#\262B\262T\262\202\210\307!\207" [ebdb-street-list 0 nil (ebdb-empty quit) ebdb-read-string format "Street, line %d: " reverse] 8 (#$ . 88868)]) (cl-generic-define-method 'ebdb-string nil '((address ebdb-field-address)) nil #[257 "!\207" [ebdb-default-address-format-function] 3 "\n\n(fn ADDRESS)"]) #@267 Return formatted ADDRESS as a string. This is the default format; it is used in the US, for example. The result looks like this: label: street street ... locality, region postcode country. (fn ADDRESS) (defalias 'ebdb-format-address-default #[257 "\302!\303!9\203\304\305!\210\306\307 \"\"\242\262\211\205$\310\311\312#\312P\313\314\315!\313\316\317 !\320\n!##?\206>\321\230?\205E\312PQ\207" [ebdb-i18n-countries-pref-scripts ebdb-i18n-countries ebdb-address-country ebdb-address-streets require ebdb-i18n rassq append mapconcat identity "\n" ebdb-concat ", " ebdb-address-locality " " ebdb-address-region ebdb-address-postcode ""] 12 (#$ . 89303)]) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-phone-p eieio-make-class-predicate ebdb-field-phone ebdb-field-phone--eieio-childp eieio-make-child-predicate ebdb-field-phone-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-phone) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field) ((label-list :initform ebdb-phone-label-list) (country-code :initarg :country-code :type (or null number) :custom (choice (const :tag "Empty" nil) (integer :tag "Country code")) :initform nil) (area-code :initarg :area-code :type (or null number) :custom (choice (const :tag "Empty" nil) (integer :tag "Area code")) :initform nil) (number :initarg :number :type (or null string) :custom (choice (const :tag "Empty" nil) (string :tag "Number")) :initform nil) (extension :initarg :extension :type (or null number) :custom (choice (const :tag "Empty" nil) (integer :tag "Extension")) :initform nil) (actions :initform '(("Dial phone number" . ebdb-field-phone-dial) ("Send text via Signal" . ebdb-field-phone-signal-text)))) (:human-readable "phone")] 6) #@73 Create a new object of class type `ebdb-field-phone'. (fn &rest SLOTS) (defalias 'ebdb-field-phone #[128 "\300\301\302#\207" [apply make-instance ebdb-field-phone] 5 (#$ . 91259)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-phone compiler-macro ebdb-field-phone--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-phone--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 91567)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\312\313%\210\300\314\302\315\302\316%\210\317\320\321\322!\"\210\317\323\324\322!\"\210\317\325\323\"\210\326\325\327\330#\210\331\322\332\323#\333\322\334\335\336$\207" [cl-generic-define-method ebdb-string nil ((phone ebdb-field-phone)) #[257 "\211\300\301\302\"\203\303\304\301\302\"\"B\262\301\305\"\203#\301\305\"B\262\301\306\"\2035\303\307\301\306\"\"B\262\301\310\"\203G\303\311\301\310\"\"B\262\211\205O\312\313\"\262\207" [nil slot-value extension format "X%d" number area-code "(%d) " country-code "+%d " apply concat] 8 "Display the value of this phone number as a string.\n\n(fn PHONE)"] ebdb-read ((class (subclass ebdb-field-phone)) &optional slots obj) #[769 "\211\203 \300\301\"\206\302\303\"\203\300\304\"\206\302\305\"\306\205'\307\310\"\205/\307\311\"\312R\2059\300\313\"\3142g\3151T\316\314\317 \320\"\n#\"0\202c\321 \210\322\323A@\"\210\324\325!\262\210\202=\207" [slot-value country-code plist-get :country-code area-code :area-code "Number" format " +%d" " (%d)" ": " number --ebdb-error-retry-- (ebdb-unparseable) throw ebdb-parse ebdb-read-string ding message "Error: %s" sit-for 2] 14 "\n\n(fn CLASS &optional SLOTS OBJ)"] ebdb-parse ((class (subclass ebdb-field-phone)) (string string) &optional slots) t #[1027 "\300\301\302\303\304!r\211q\210\305\306\307\310\311!\312\"\313$\216\314!c\210eb\210\315\316\"\204;\317!\203;\320\316\321\322\323!!#\262\306\225b\210\315\324\"\204\210\317!\203\210\212\306\225b\210\325 \305\306\326\310\311!\327\"\330$\216\331`\332d\333#\203m\306\224b\210`\206ndZ!\334W)\262)\204\210\320\324\321\322\323!!#\262\306\225b\210`dW\203\277\332\335\336\"!\203\277\315\337\"\204\247\320\337\322\323!#\262\315\340\"\204\277\322\313!\203\277\320\340\321\322\313!!#\262*\210#\207" ["\\+(?\\([0-9]\\{1,3\\}\\))?[ ]+" "(?\\([0-9]\\{1,4\\}\\)[-)./ ]+" "[ ]?e?[xX]t?\\.?[ ]?\\([0-9]+\\)" generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 ebdb-string-trim plist-member :country-code looking-at plist-put string-to-number match-string 1 :area-code match-data "\301\300\302\"\207" [set-match-data evaporate] 3 abs re-search-forward t 6 format "\\([^[:blank:]]+\\)\\(%s\\)?" :number :extension] 15 "\n\n(fn CL--CNM CLASS STRING &optional SLOTS)"] cl-print-object ((phone ebdb-field-phone) stream) #[514 "\300\301\302\303!\304!#\"\207" [princ format "#<%S %s>" eieio-object-class-name ebdb-string] 8 "\n\n(fn PHONE STREAM)"] defalias ebdb-field-notes-p eieio-make-class-predicate ebdb-field-notes ebdb-field-notes--eieio-childp eieio-make-child-predicate ebdb-field-notes-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-notes) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) ((notes :type string :initarg :notes :initform "" :documentation "User notes on this contact.")) (:human-readable "notes")] 6) #@73 Create a new object of class type `ebdb-field-notes'. (fn &rest SLOTS) (defalias 'ebdb-field-notes #[128 "\300\301\302#\207" [apply make-instance ebdb-field-notes] 5 (#$ . 94859)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-notes compiler-macro ebdb-field-notes--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-notes--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 95167)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\300\311\302\312\307\313%\210\314\315\316\315\317\302#\320#\210\300\315\302\321\302\322%\210\314\323\324\325!\"\210\314\326\327\325!\"\210\314\330\326\"\210\331\330\332\333#\210\334\325\335\326#\336\325\337\340\341$\207" [cl-generic-define-method ebdb-string nil ((notes ebdb-field-notes)) #[257 "\300\301\"\207" [slot-value notes] 4 "\n\n(fn NOTES)"] ebdb-read ((class (subclass ebdb-field-notes)) &optional slots obj) t #[1026 "\211\205\300!\301\302\303\304\"##\207" [ebdb-string plist-put :notes ebdb-read-string "Notes"] 13 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-parse ((class (subclass ebdb-field-notes)) (str string) &optional slots) #[1027 "\300\301##\207" [plist-put :notes] 11 "\n\n(fn CL--CNM CLASS STR &optional SLOTS)"] defalias ebdb-record-update-notes cl-generic-define (record note &optional replace) "Convenience function for updating a record's notes field.\nNOTE will appended to REC's existing notes field (or added as a\nnew notes field, if REC didn't already have one.\n\nIf optional arg REPLACE is non-nil, replace any existing notes.\n\n(fn RECORD NOTE &optional REPLACE)" ((rec ebdb-record) (note string) &optional replace) #[770 "\301\302\"\211\203#\303\304\203\202\305!P\"#\202+\306\304\"\"\207" [ebdb-default-notes-class ebdb-record-field notes ebdb-record-change-field ebdb-parse ebdb-string ebdb-record-insert-field] 11 "\n\n(fn REC NOTE &optional REPLACE)"] ebdb-field-timestamp-p eieio-make-class-predicate ebdb-field-timestamp ebdb-field-timestamp--eieio-childp eieio-make-child-predicate ebdb-field-timestamp-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-timestamp) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) ((timestamp :initarg :timestamp :type list :initform nil)) (:human-readable "timestamp")] 6) #@77 Create a new object of class type `ebdb-field-timestamp'. (fn &rest SLOTS) (defalias 'ebdb-field-timestamp #[128 "\300\301\302#\207" [apply make-instance ebdb-field-timestamp] 5 (#$ . 97318)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-timestamp compiler-macro ebdb-field-timestamp--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-timestamp--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 97646)]) (cl-generic-define-method 'ebdb-stamp-time nil '((field ebdb-field-timestamp)) nil #[257 "\300\301\"\207" [ebdb-update-timestamp-field timestamp] 4 "\n\n(fn FIELD)"]) #@16 (fn TS SLOT) (defalias 'ebdb-update-timestamp-field #[514 "\300\301 #\207" [eieio-oset current-time] 8 (#$ . 98054)]) (byte-code "\300\301\302\303\302\304%\210\305\306\307\310!\"\210\305\311\312\310!\"\210\305\313\311\"\210\314\313\315\316#\210\317\310\320\311#\321\310\322\302\323$\207" [cl-generic-define-method ebdb-string nil ((field ebdb-field-timestamp)) #[257 "\301\302\303\"\304#\207" [ebdb-time-format format-time-string slot-value timestamp t] 6 "\n\n(fn FIELD)"] defalias ebdb-field-creation-date-p eieio-make-class-predicate ebdb-field-creation-date ebdb-field-creation-date--eieio-childp eieio-make-child-predicate ebdb-field-creation-date-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-creation-date) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-timestamp) (:human-readable "creation date")] 6) #@81 Create a new object of class type `ebdb-field-creation-date'. (fn &rest SLOTS) (defalias 'ebdb-field-creation-date #[128 "\300\301\302#\207" [apply make-instance ebdb-field-creation-date] 5 (#$ . 98933)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-creation-date compiler-macro ebdb-field-creation-date--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-creation-date--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 99281)]) (defvar ebdb-anniversary-label-list '("birthday" "marriage" "death")) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-anniversary-p eieio-make-class-predicate ebdb-field-anniversary ebdb-field-anniversary--eieio-childp eieio-make-child-predicate ebdb-field-anniversary-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-anniversary) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field-user) ((label-list :initform ebdb-anniversary-label-list) (date :initarg :date :type list :custom (choice (list integer integer) (list integer integer integer)) :documentation "A list of numbers representing a date, either (month day)\n or (month day year)") (calendar :initarg :calendar :type symbol :initform gregorian :custom symbol :documentation "The calendar to which this date applies.") (actions :initform '(("Browse date in calendar" . ebdb-field-anniversary-calendar) ("Browse date in Org agenda" . ebdb-field-anniversary-agenda)))) (:human-readable "anniversary")] 6) #@79 Create a new object of class type `ebdb-field-anniversary'. (fn &rest SLOTS) (defalias 'ebdb-field-anniversary #[128 "\300\301\302#\207" [apply make-instance ebdb-field-anniversary] 5 (#$ . 100670)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-anniversary compiler-macro ebdb-field-anniversary--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-anniversary--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 101009)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\304\310%\210\300\311\302\312\302\313%\210\300\314\302\315\302\316%\210\300\317\302\320\302\321%\207" [cl-generic-define-method initialize-instance nil ((field ebdb-field-anniversary) &optional slots) t #[770 "\300\301\"\250\203\302\301\303\300\301\"!#\262\"\207" [plist-get :date plist-put calendar] 10 "Migrate from previous single-integer date value to (day month year) list.\nThis allows for anniversaries where we don't know the year.\nEventually this method will go away.\n\n(fn CL--CNM FIELD &optional SLOTS)"] ebdb-read ((class (subclass ebdb-field-anniversary)) &optional slots obj) #[1026 "\3031\304\305\205\306\307\310\"8\"0\202\210\311\312\313\314\315\316\317\311\"\"\311\320\2051\307 \310\"@SH\311&\321\322\"\320#A\211\206A\323\211\306U\203t \211\324W\203V\325 !S \326\246\324U\205l \327\246\324U?\206l \330\246\324U)\203t\331\202x\332\nSH*\333\334\335\"\336\337\340\341\342!\343\"\344\345%\205\231\346\307\310\"A@!#\347\350\nE##\207" [calendar-month-name-array year month (quit ebdb-empty) read-number "Year (C-g to omit): " 2 slot-value date nil assoc-string completing-read "Month: " mapcar list append t calendar-make-alist 1 2017 0 abs 4 100 400 29 [31 28 31 30 31 30 31 31 30 31 30 31] calendar-read format "Day (1-%d): " make-byte-code 257 "\301W\205 \211\300X\207" vconcat vector [0] 3 "\n\n(fn X)" number-to-string plist-put :date] 17 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-init-field ((anniv ebdb-field-anniversary) record) #[514 "\205 \301\302\303\"\"\207" [ebdb-use-diary add-to-list ebdb-diary-entries ebdb-field-anniv-diary-entry] 7 "\n\n(fn ANNIV RECORD)"] ebdb-string ((ann ebdb-field-anniversary)) #[257 "\302\303\"\304\211\211A@@\3058\206\304\306BBBBBB\3071&\310!0\202+\210\311\310\"\312\3058\2036\2027 \"\207" [ebdb-anniversary-ymd-format ebdb-anniversary-md-format slot-value date 0 2 (nil nil nil) (wrong-number-of-arguments) encode-time apply format-time-string] 9 "\n\n(fn ANN)"] ebdb-delete-field ((anniv ebdb-field-anniversary) record &optional _unload) #[770 "\205 \302\303\" \"\211\207" [ebdb-use-diary ebdb-diary-entries delete ebdb-field-anniv-diary-entry] 7 "\n\n(fn ANNIV RECORD &optional UNLOAD)"]] 6) #@26 List of known ID labels. (defvar ebdb-id-label-list '("SSN" "TIN" "ID" "UTR") (#$ . 103553)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-id-p eieio-make-class-predicate ebdb-field-id ebdb-field-id--eieio-childp eieio-make-child-predicate ebdb-field-id-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-id) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field-obfuscated ebdb-field-user) ((label-list :initform ebdb-id-label-list) (id-number :type string :custom string :initarg :id-number :initform "" :documentation "The ID number itself.")) (:human-readable "id number")] 6) #@70 Create a new object of class type `ebdb-field-id'. (fn &rest SLOTS) (defalias 'ebdb-field-id #[128 "\300\301\302#\207" [apply make-instance ebdb-field-id] 5 (#$ . 104318)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-id compiler-macro ebdb-field-id--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-id--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 104612)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-id)) &optional slots obj) t #[1026 "\300\301\205\n\302\303\"\"\304\305##\207" [ebdb-read-string "ID number" slot-value id-number plist-put :id-number] 11 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-id)) #[257 "\300\301\"\207" [slot-value id-number] 4 "\n\n(fn FIELD)"]] 6) (defvar ebdb-relation-label-list '("father" "mother" "sister" "brother" "son" "daughter" "aunt" "uncle" "grandmother" "grandfather" "wife" "husband")) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-relation-p eieio-make-class-predicate ebdb-field-relation ebdb-field-relation--eieio-childp eieio-make-child-predicate ebdb-field-relation-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-relation) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field) ((label-list :initform ebdb-relation-label-list) (rel-uuid :initarg :rel-uuid :type string :initform #1="" :documentation "The UUID of the target record.") (rel-label :initarg :rel-label :type string :custom string :initform #1# :documentation "The label on the \"other side\" of the\n relation, pointing at this record.") (actions :initform '(("Follow relationship" . ebdb-follow-related)))) (:human-readable "relationship")] 6) #@76 Create a new object of class type `ebdb-field-relation'. (fn &rest SLOTS) (defalias 'ebdb-field-relation #[128 "\300\301\302#\207" [apply make-instance ebdb-field-relation] 5 (#$ . 106365)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-relation compiler-macro ebdb-field-relation--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-relation--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 106689)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\300\311\302\312\302\313%\210\300\314\302\315\302\316%\210\317\320\321\322!\"\210\317\323\324\322!\"\210\317\325\323\"\210\326\325\327\330#\210\331\322\332\323#\333\322\334\335\336$\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-relation)) &optional slots obj) t #[1026 "\211\203 \302\303\"\202\304\305\306\"!\307\310\205\302\311\" #\312\313#\262\312\314#\262#\207" [ebdb-default-record-class ebdb-relation-label-list slot-value rel-uuid ebdb-record-uuid ebdb-prompt-for-record nil ebdb-read-string "Reverse label (for the other record)" rel-label plist-put :rel-uuid :rel-label] 10 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((rel ebdb-field-relation)) #[257 "\300\301\302\"\303\"\211\203\304!\202\305\207" [ebdb-gethash slot-value rel-uuid uuid ebdb-string "record not loaded"] 5 "\n\n(fn REL)"] ebdb-init-field ((rel ebdb-field-relation) record) #[514 "\301!B\302\303\"\304\305\"B#\207" [ebdb-relation-hashtable ebdb-record-uuid slot-value rel-uuid puthash gethash] 11 "Initialize REL related field for RECORD.\nAdds relation information to the `ebdb-relation-hashtable'.\n\n(fn REL RECORD)"] ebdb-delete-field ((rel ebdb-field-relation) record &optional _unload) #[770 "\301\302\"\303\304\305!B\306\301\n\302\"\"\"#\207" [ebdb-relation-hashtable slot-value rel-uuid puthash delete ebdb-record-uuid gethash] 13 "Delete REL related field on RECORD.\nRemoves relation information from the\n`ebdb-relation-hashtable'.\n\n(fn REL RECORD &optional UNLOAD)"] defalias ebdb-field-image-p eieio-make-class-predicate ebdb-field-image ebdb-field-image--eieio-childp eieio-make-child-predicate ebdb-field-image-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-image) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) ((image :type (or null string symbol) :initarg :image :initform `,ebdb-image)) (:human-readable "image")] 6) #@73 Create a new object of class type `ebdb-field-image'. (fn &rest SLOTS) (defalias 'ebdb-field-image #[128 "\300\301\302#\207" [apply make-instance ebdb-field-image] 5 (#$ . 108953)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-image compiler-macro ebdb-field-image--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-image--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 109262)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\207" [cl-generic-define-method ebdb-read nil ((image (subclass ebdb-field-image)) &optional slots obj) t #[1026 "\211\205\301\302\"\303;\204\304\305!\203\306\307\310$\2025\304\311!\2030\312\313\314\315\303\316%!\2025\317\320!\210\303\262\321\322##\207" [ebdb-image-path slot-value image nil yes-or-no-p "Find image file? " read-file-name "Image file: " confirm "Use name format? " intern completing-read "Format: " (name fl-name lf-name) t message "Image will be found using `ebdb-field-image-function'." plist-put :image] 13 "\n\n(fn CL--CNM IMAGE &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-image)) #[257 "\300\301\"\302;\203\303\202\304\"\207" [slot-value image format "Image file: %s" "Image format: %s"] 5 "\n\n(fn FIELD)"]] 6) #@27 List of known URL labels. (defvar ebdb-url-label-list '("homepage") (#$ . 110338)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-url-p eieio-make-class-predicate ebdb-field-url ebdb-field-url--eieio-childp eieio-make-child-predicate ebdb-field-url-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-url) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-labeled ebdb-field-user) ((label-list :initform ebdb-url-label-list) (url :type string :initarg :url :custom string :initform "") (actions :initform '(("Browse URL" . ebdb-field-url-browse)))) (:human-readable "URL")] 6) #@71 Create a new object of class type `ebdb-field-url'. (fn &rest SLOTS) (defalias 'ebdb-field-url #[128 "\300\301\302#\207" [apply make-instance ebdb-field-url] 5 (#$ . 111082)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-url compiler-macro ebdb-field-url--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-url--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 111381)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\300\311\302\312\304\313%\210\314\315\316\317!\"\210\314\320\321\317!\"\210\314\322\320\"\210\323\322\324\325#\210\326\317\327\320#\330\317\331\332\333$\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-url)) &optional slots obj) t #[1026 "\300\301\205\n\302\303\"\"\304\305##\207" [ebdb-read-string "Url" slot-value url plist-put :url] 11 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-url)) #[257 "\300\301\"\207" [slot-value url] 4 "\n\n(fn FIELD)"] ebdb-parse ((class (subclass ebdb-field-url)) (str string) &optional slots) #[1027 "\302\303\"\204f\304!\305\306\307#)\266\203\203`\310\303\305\211\307\311\206(\312\313Q\"\203:\314\315\306\211$\266\202\202=\266\202\307\316\206E\312\317Q\"\203W\314\315\306\211$\266\205\202Z\266\205#\262\202f\320\321\322C\"\210#\207" [ebdb-url-valid-schemes inhibit-changing-match-data plist-get :url regexp-opt nil t string-match plist-put "\\(?:" "[ \n ]+" "\\)\\'" replace-match #1="" "\\`\\(?:" "\\)" signal ebdb-unparseable "invalid URL scheme"] 17 "Parse a URL.\nSee `ebdb-url-valid-schemes' for a list of acceptable schemes.\n\n(fn CL--CNM CLASS STR &optional SLOTS)"] defalias ebdb-field-location-p eieio-make-class-predicate ebdb-field-location ebdb-field-location--eieio-childp eieio-make-child-predicate ebdb-field-location-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-location) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user) ((location-label :initarg :location-label :initform #1# :type string :custom string :documentation "A human-readable location description") (location-geo :initarg :location-geo :initform nil :type (or list nil) :custom '(choice (const :tag "Empty" nil) ((cons number number) :tag "Geo coordinate pair")) :documentation "Geo coordinates as a cons of two numbers.") (timezone :initarg :timezone :initform #1# :type string :custom string :documentation "Timezone in tzdata/Olson format, eg \"Europe/Berlin\".") (actions :initform (("Display current time" . ebdb-location-current-time)))) (:documentation "Field holding location data for the record.\n Data is in three parts: an arbitrary location string, a cons of\n lat/long geodata, and a tzdata/Olson timezone string." :human-readable "location")] 6) #@76 Create a new object of class type `ebdb-field-location'. (fn &rest SLOTS) (defalias 'ebdb-field-location #[128 "\300\301\302#\207" [apply make-instance ebdb-field-location] 5 (#$ . 114022)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-location compiler-macro ebdb-field-location--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-location--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 114346)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313\314!\"\210\311\315\316\314!\"\210\311\317\315\"\210\320\317\321\322#\210\323\314\324\315#\325\314\326\327\330$\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-location)) &optional slots obj) t #[1026 "\300\301\"\206\302\303\205\304\305\"\"\300\306\"\206.\3071,\302\310\205'\304\311\"\"0\202.\210\312\300\313\"\206J\3071H\302\314\205C\304\315\"\"0\202J\210\312\301\306\313\257#\207" [plist-get :location-label ebdb-read-string "Location label" slot-value location-label :location-geo (quit ebdb-empty) "Location geo (C-g to skip)" location-geo nil :timezone "Timezone (eg \"Europe/Berlin\"; C-g to skip): " timezone] 15 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-location)) #[257 "\211\300\301\"\300\302\"\205\303\304\300\302\"\"P\207" [slot-value location-label timezone format ": %s"] 8 "\n\n(fn FIELD)"] defalias ebdb-field-gender-p eieio-make-class-predicate ebdb-field-gender ebdb-field-gender--eieio-childp eieio-make-child-predicate ebdb-field-gender-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-gender) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user ebdb-field-singleton) ((gender :initarg :gender :initform 'unknown :type symbol :custom (choice (const :tag "Female" female) (const :tag "Male" male) (const :tag "Other" other) (const :tag "Unknown" unknown) (const :tag "Not applicable" na)))) (:documentation "A field holding a record's gender." :human-readable "gender")] 6) #@74 Create a new object of class type `ebdb-field-gender'. (fn &rest SLOTS) (defalias 'ebdb-field-gender #[128 "\300\301\302#\207" [apply make-instance ebdb-field-gender] 5 (#$ . 116212)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-gender compiler-macro ebdb-field-gender--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-gender--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 116526)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313\314!\"\210\311\315\316\314!\"\210\311\317\315\"\210\320\317\321\322#\210\323\314\324\315#\325\314\326\327\330$\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-gender)) &optional slots obj) t #[1026 "\300\301\302\303\205\304\305\306\"\"\307$\"A\310\311##\207" [(("female" . female) ("male" . male) ("other" . other) ("unknown" . unknown) ("not applicable" . na)) assoc-string ebdb-read-string "Gender" rassoc slot-value gender t plist-put :gender] 12 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-gender)) #[257 "\300\301\302\"!\207" [symbol-name slot-value gender] 5 "\n\n(fn FIELD)"] defalias ebdb-field-language-p eieio-make-class-predicate ebdb-field-language ebdb-field-language--eieio-childp eieio-make-child-predicate ebdb-field-language-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-language) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user) ((language :initarg :language :type string :custom string)) (:human-readable "language" :documentation "A field specifying a language that can be used\n to communication with this contact.")] 6) #@76 Create a new object of class type `ebdb-field-language'. (fn &rest SLOTS) (defalias 'ebdb-field-language #[128 "\300\301\302#\207" [apply make-instance ebdb-field-language] 5 (#$ . 118023)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-language compiler-macro ebdb-field-language--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-language--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 118347)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\311\312\313\314!\"\210\311\315\316\314!\"\210\311\317\315\"\210\320\317\321\322#\210\323\314\324\315#\325\314\326\327\330$\207" [cl-generic-define-method ebdb-string nil ((field ebdb-field-language)) #[257 "\300\301\"\207" [slot-value language] 4 "\n\n(fn FIELD)"] ebdb-read ((class (subclass ebdb-field-language)) &optional slots obj) t #[1026 "\301\302\205\n\303\304\"\305$\306\307##\207" [language-info-alist ebdb-read-string "Language: " slot-value language nil plist-put :language] 11 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] defalias ebdb-field-bank-account-p eieio-make-class-predicate ebdb-field-bank-account ebdb-field-bank-account--eieio-childp eieio-make-child-predicate ebdb-field-bank-account-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-bank-account) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user) ((bank-name :initarg :bank-name :type string :custom string :documentation "Bank name") (bank-address :initarg :bank-address :type (or null ebdb-field-address) :initform nil :documentation "Bank address") (routing-aba :initarg :routing-aba :type (or string null) :initform nil :custom (choice string (const :tag "None" nil)) :documentation "Routing number or ABA") (swift-bic :initarg :swift-bic :type (or string null) :initform nil :custom (choice string (const :tag "None" nil)) :documentation "SWIFT or BIC code, for international transfers") (account-name :initarg :account-name :type string :custom string :documentation "Name of account") (account-numbers :initarg :account-numbers :type list :custom (repeat (cons (string :tag "Account label") (string :tag "Account number"))) :documentation "A list of account labels and numbers/IBANs") (notes :initarg :notes :type (or null ebdb-field-notes) :initform nil :documentation "Additional notes")) (:human-readable "bank account" :documentation "A field holding information for a bank account.")] 6) #@80 Create a new object of class type `ebdb-field-bank-account'. (fn &rest SLOTS) (defalias 'ebdb-field-bank-account #[128 "\300\301\302#\207" [apply make-instance ebdb-field-bank-account] 5 (#$ . 120600)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-bank-account compiler-macro ebdb-field-bank-account--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-bank-account--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 120944)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-bank-account)) &optional slots obj) t #[1026 "\300\301\"\206\302\303\205\304\305\"\"\300\306\"\206/\3071-\310\311\312\205(\304\313\"#0\202/\210\314\300\315\"\206K\3071I\302\316\205D\304\317\"\"0\202K\210\314\300\320\"\206h\3071f\302\321\205a\304\322\"\"0\202h\210\314\300\323\"\206}\302\324\205|\304\325\"\"\300\326\"\206\245\314\3272\243\3301\234\302\331!\302\332!BB\262\202\216\210\333\327\237\"0\262\300\334\"\206\305\3071\303\310\335\314 \205\276\304\n\336\"#0\202\305\210\314\n\n\301 \306\n\315 \320\f\323 \326\334\257\n#\207" [plist-get :bank-name ebdb-read-string "Bank name" slot-value bank-name :bank-address (quit ebdb-empty) ebdb-read ebdb-field-address (:label "office") bank-address nil :routing-aba "Routing or ABA number" routing-aba :swift-bic "SWIFT or BIC code" swift-bic :account-name "Account name" account-name :account-numbers --ebdb-loop-exit-- (quit ebdb-empty) "Account label (eg. \"checking\"): " "Account number/IBAN" throw :notes ebdb-field-notes notes] 27 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((acct ebdb-field-bank-account)) #[257 "\211\300\301\"\302\300\303\"\205\304\305\306\300\303\"!\"\302\300\307\"\205'\304\310\300\307\"\"\300\311\"\2057\304\312\300\311\"\"\302\300\313\"\302\314\315\300\f\316\"\302#\300 \317\"\205Y\304\320\306\300\317\"!\"\260 \207" [slot-value bank-name "\n" bank-address format "%s\n" ebdb-string routing-aba "Routing/ABA: %s\n" swift-bic "SWIFT/BIC: %s\n" account-name mapconcat #[257 "\300\301@A#\207" [format "%s: %s"] 5 "\n\n(fn A)"] account-numbers notes "\n%s\n"] 18 "\n\n(fn ACCT)"]] 6) #@49 Variable holding tags defined for EBDB records. (defvar ebdb-tags nil (#$ . 122993)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-tags-p eieio-make-class-predicate ebdb-field-tags ebdb-field-tags--eieio-childp eieio-make-child-predicate ebdb-field-tags-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-tags) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user ebdb-field-singleton) ((tags :initarg :tags :initform nil :type list :custom (repeat string) :documentation "List of string tags.")) (:documentation "A field class holding a list of string tags\n for a record. Also see `ebdb-org-field-tags', which behaves\n like this class but also completes on tags defined in Org\n files." :human-readable "tags")] 6) #@72 Create a new object of class type `ebdb-field-tags'. (fn &rest SLOTS) (defalias 'ebdb-field-tags #[128 "\300\301\302#\207" [apply make-instance ebdb-field-tags] 5 (#$ . 123889)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-tags compiler-macro ebdb-field-tags--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-tags--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 124193)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\300\311\302\312\307\313%\210\300\314\302\315\302\316%\210\300\317\302\320\302\321%\210\300\317\302\322\302\323%\210\300\324\302\325\302\326%\210\300\327\302\330\302\331%\210\332\333\334\333\335\302#\336#\210\300\333\302\337\302\340%\207" [cl-generic-define-method ebdb-string nil ((field ebdb-field-tags)) #[257 "\300\301\302\303\"\"\207" [ebdb-concat ebdb-field-tags slot-value tags] 6 "\n\n(fn FIELD)"] ebdb-read ((field (subclass ebdb-field-tags)) &optional slots obj) t #[1026 "\303\236A@\304\305\"\203\202)\306\305\307\310\311 \"\n\312\211\n\205'\313 !%#\")\207" [ebdb-separator-alist crm-separator ebdb-tags ebdb-field-tags plist-member :tags plist-put completing-read-multiple format "Tags (separate with \"%s\"): " nil ebdb-string] 16 "\n\n(fn CL--CNM FIELD &optional SLOTS OBJ)"] ebdb-parse ((field (subclass ebdb-field-tags)) str &optional slots) #[1027 "\301\302\"\204\303\302\304\305\236A@\"#\262#\207" [ebdb-separator-alist plist-get :tags plist-put split-string ebdb-field-tags] 11 "\n\n(fn CL--CNM FIELD STR &optional SLOTS)"] ebdb-search-read ((_class (subclass ebdb-field-tags))) #[257 "\301\302!\303\304\305\306#)\266\203\203\307!A\202\211\207" [inhibit-changing-match-data ebdb-read-string "Search for tags (eg +tag1-tag2|tag3): " "[-+|&]" nil t string-match org-make-tags-matcher] 9 "\n\n(fn CLASS)"] ebdb-field-search ((field ebdb-field-tags) func) #[514 "\300!\205\211\301\302\303\"\304#\207" [functionp t slot-value tags 1] 7 "\n\n(fn FIELD FUNC)"] ((field ebdb-field-tags) (tag string)) #[514 "\300\301\302\303\304\305!\306\"\307\310%\311\312\"\"\207" [seq-find make-byte-code 257 "\300\302\303\304#)\207" vconcat vector [inhibit-changing-match-data nil t string-match] 8 "\n\n(fn TG)" slot-value tags] 9 "\n\n(fn FIELD TAG)"] ebdb-init-field ((field ebdb-field-tags) record) #[514 "\300\301\"\211\211\205\211@\302\303\"\210\304\"\210A\266\202\202\262\207" [slot-value tags add-to-list ebdb-tags ebdb-puthash] 8 "\n\n(fn FIELD RECORD)"] ebdb-delete-field ((field ebdb-field-tags) record &optional _unload) #[770 "\300\301\"\211\205\211@\302\"\210A\266\202\202\207" [slot-value tags ebdb-remhash] 8 "\n\n(fn FIELD RECORD &optional UNLOAD)"] defalias ebdb-record-add-tag cl-generic-define (record tag) "Convenience function for tagging a record.\nAdds string TAG to RECORD's list of tags.\n\n(fn RECORD TAG)" ((rec ebdb-record) (tag string)) #[514 "\300\301\"\242\211\203\302\303\301\304\305\306\"B##\202#\307\310\301\"\"\207" [ebdb-record-field ebdb-field-tags ebdb-record-change-field make-instance :tags slot-value tags ebdb-record-insert-field ebdb-parse] 13 "\n\n(fn REC TAG)"]] 6) #@193 An alist holding all alias definitions from EBDB. Each element looks like: (alias (rec1 addr1) (rec2 addr2) ...). Instead of actual records, the rec1, rec2 elements can also be record uuids. (defvar ebdb-mail-alias-alist nil (#$ . 127187)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-mail-alias-p eieio-make-class-predicate ebdb-field-mail-alias ebdb-field-mail-alias--eieio-childp eieio-make-child-predicate ebdb-field-mail-alias-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-mail-alias) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user) ((alias :type string :initarg :alias :custom string :documentation "A mail alias for this record.") (address :type (or null ebdb-field-mail) :initarg :address :documentation\. "The mail address to use with this record.")) (:human-readable "mail alias" :documentation "A field holding a single mail alias for a\n record. The field holds the alias string, and an optional\n mail address to use with that alias.")] 6) #@78 Create a new object of class type `ebdb-field-mail-alias'. (fn &rest SLOTS) (defalias 'ebdb-field-mail-alias #[128 "\300\301\302#\207" [apply make-instance ebdb-field-mail-alias] 5 (#$ . 128327)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-mail-alias compiler-macro ebdb-field-mail-alias--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-mail-alias--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 128661)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\300\311\302\312\302\313%\210\300\314\302\315\302\316%\210\317\320\321\322!\"\210\317\323\324\322!\"\210\317\325\323\"\210\326\325\327\330#\210\331\322\332\323#\333\322\334\335\336$\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-mail-alias)) &optional slots obj) t #[1026 "\301\302\205\n\303\304\"\305\306\"#\307\310##\207" [ebdb-mail-alias-alist ebdb-read-string "Alias" slot-value alias mapcar car plist-put :alias] 11 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-mail-alias)) #[257 "\211\300\301\"\203\302\303\300\304\"\305\300\301\"!#\202\300\304\"\207" [slot-value address format "%s: %s" alias ebdb-string] 9 "\n\n(fn FIELD)"] ebdb-init-field ((field ebdb-field-mail-alias) record) #[514 "\301\302\303\"\"\211\203\211\302\304\"DAB\241\202)\302\303\"\302\304\"DDB\211\262\207" [ebdb-mail-alias-alist assoc slot-value alias address] 9 "\n\n(fn FIELD RECORD)"] ebdb-delete-field ((field ebdb-field-mail-alias) record &optional _unload) #[770 "\301\302\303\"\"\243\236\211\203\304A\"\241\202 \305\"\211\266\202\207" [ebdb-mail-alias-alist assoc slot-value alias remove delq] 10 "\n\n(fn FIELD RECORD &optional UNLOAD)"] defalias ebdb-field-passport-p eieio-make-class-predicate ebdb-field-passport ebdb-field-passport--eieio-childp eieio-make-child-predicate ebdb-field-passport-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-passport) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user) ((country :type string :initarg :country :custom string :initform #1="") (number :type string :initarg :number :custom string :initform #1#) (issue-date :initarg :issue-date :type (or nil number)) (expiration-date :initarg :expiration-date :type (or nil number))) (:human-readable "passport")] 6) #@76 Create a new object of class type `ebdb-field-passport'. (fn &rest SLOTS) (defalias 'ebdb-field-passport #[128 "\300\301\302#\207" [apply make-instance ebdb-field-passport] 5 (#$ . 130820)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-passport compiler-macro ebdb-field-passport--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-passport--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 131144)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313\312\314\302#\315#\210\311\316\313\316\317\302#\320#\210\311\321\313\321\322\302#\323#\210\300\324\302\325\302\326%\210\300\301\302\327\302\330%\210\300\316\302\331\302\332%\210\300\333\302\334\304\335%\210\300\312\302\336\302\337%\210\300\340\302\341\302\342%\210\300\343\302\344\302\345%\210\311\346\313\346\347\302#\350#\210\311\351\313\351\352\302#\353#\210\311\354\313\354\355\302#\356#\210\311\357\313\357\360\302#\361#\210\300\351\302\362\302\363%\210\300\351\364\365\304\366%\210\300\354\302\367\302\370%\210\300\354\371\372\304\373%\210\300\357\302\374\302\375%\210\300\346\302\376\302\377%\210\311\201@\313\201@\201A\302#\201B#\210\300\201@\302\201C\302\201D%\210\300\201E\302\201F\302\201G%\210\311\201H\313\201H\201I\302#\201J#\210\300\201H\302\201K\302\201L%\210\300\201M\302\201N\302\201O%\210\300\351\302\201P\304\201Q%\210\300\201R\302\201S\302\201T%\210\300\201U\302\201V\302\201W%\210\300\201X\302\201Y\302\201Z%\210\300\201[\302\201\\\302\201]%\210\300\201^\302\201_\302\201`%\210\300\201a\302\201b\302\201c%\210\300\201d\302\201e\302\201f%\210\311\201g\201h\201i!\"\210\311\201j\201k\201i!\"\210\311\201l\201j\"\210\201m\201l\201n\201o#\210\201p\201i\201q\201j#\201r\201i\201s\201t\201u$\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-passport)) &optional slots obj) t #[1026 "\306\307\205\n\310\311\"\"\306\312\205\310\313\"\"\314 \211\3158)\316\211\317U\203.\320\321!\202i\n\317V\203\242\nS\322\211\211@)\211A@)\3158)\f S\323_\\ \315V\203\217 \324 \325_\\\326\245Z\n\211\317W\203r\327\n!S\n\325\246\317U\205\210\n\330\246\317U?\206\210\n\331\246\317U)\203\217 T - \332_ \325\245 \330\245[ \331\245%\202i\327\nT!\333\211\211@)\211A@)\3158)\f S\323_\\ \315V\203\377 \324 \325_\\\326\245Z\n\211\317W\203\342\327\n!S\n\325\246\317U\205\370\n\330\246\317U?\206\370\n\331\246\317U)\203\377 T - \332_ \325\245 \330\245[ \331\245\334\211\211@)\211A@)\3158)\f S\323_\\ \315V\203e \324 \325_\\\326\245Z\n\211\317W\203H\327\n!S\n\325\246\317U\205^\n\330\246\317U?\206^\n\331\246\317U)\203e T -&+\314 \211\3158)\316\211\317U\203\202\320\321!\202\275\n\317V\203\366\nS\322\211\211@)\211A@)\3158)\f S\323_\\ \315V\203\343 \324 \325_\\\326\245Z\n\211\317W\203\306\327\n!S\n\325\246\317U\205\334\n\330\246\317U?\206\334\n\331\246\317U)\203\343 T - \332_ \325\245 \330\245[ \331\245%\202\275\327\nT!\333\211\211@)\211A@)\3158)\f S\323_\\ \315V\203S \324 \325_\\\326\245Z\n\211\317W\2036\327\n!S\n\325\246\317U\205L\n\330\246\317U?\206L\n\331\246\317U)\203S T - \332_ \325\245 \330\245[ \331\245\334\211\211@)\211A@)\3158)\f S\323_\\ \315V\203\271 \324 \325_\\\326\245Z\n\211\317W\203\234\327\n!S\n\325\246\317U\205\262\n\330\246\317U?\206\262\n\331\246\317U)\203\271 T -&+\335\336#\262\335\337#\262\335\340#\262\335\341#\262#\207" [date offset-years year month day day-of-year ebdb-read-string "Country" slot-value country "Number" number calendar-read-date 2 nil 0 user-error "There was no year zero" + 31 23 4 10 abs 100 400 365 - (12 31 -1) plist-put :country :number :issue-date :expiration-date] 18 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-passport)) #[257 "\211\300\301\302\303\"\302\304\"\305\306\307\310\311\211\211\312\302 \313\"!%\"\305\306\307\310\311\211\211\312\302\314\"!%\"%\207" [format "(%s) %s\nIssued: %s\nExpires: %s" slot-value country number format-time-string "%F" apply encode-time 0 calendar-gregorian-from-absolute issue-date expiration-date] 18 "\n\n(fn FIELD)"] defalias ebdb-init-record cl-generic-define (record) "Initialize RECORD.\nSpecific behavior is determined by subclass, but usually involves\nsetting up RECORD's cache, and calling `ebdb-init-field' on the\nrecord's fields.\n\nNote this specifically does *not* hash the record against its\nUUID -- this is done earlier in the process, by the record's\ndatabase(s).\n\n(fn RECORD)" ebdb-delete-record (record &optional db unload) "Delete RECORD.\nThis goes through a series of deletion routines, removing RECORD\nfrom its respective databases, un-hashing its uuid, running\n`ebdb-delete-field' on its fields, etc.\n\nIf DB is given, only delete RECORD from DB.\n\nIf UNLOAD is non-nil, we should only unload RECORD, not delete it\naltogether.\n\n(fn RECORD &optional DB UNLOAD)" ebdb-record-change-name (record name) "Change RECORD's name to NAME.\nNAME can be an instance of `ebdb-field-name' or one of its\nsubclasses, or it can be a string, in which case the class of\nRECORD is responsible for parsing it correctly.\n\n(fn RECORD NAME)" ebdb-record-uuid ((record ebdb-record)) #[257 "\300\301\"\211\205\f\300\301\"\207" [slot-value uuid] 5 "\n\n(fn RECORD)"] ((class (subclass ebdb-record)) &optional slots) #[513 "\3011 \302!0\202 \210\303\211\203\304\305#\262\306\307#\207" [ebdb-default-notes-class (quit ebdb-empty) ebdb-read nil plist-put :notes apply make-instance] 7 "Create a new record of class CLASS from the values in SLOTS.\n\n(fn CLASS &optional SLOTS)"] ((record ebdb-record) &optional db unload) #[769 "\203:\203 \202*C\202*\301\302\"\303!>\204%\304\305\306D\"\210\211\307H\262\310!\204F\211\203E\211@\311\"\210A\266\202\2022\210\301\312\"\211\203_\211@\313#\210A\266\202\202J\210\314\"\210\315!\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-record-uuid ebdb-db-remove-record fields ebdb-delete-field ebdb-remhash delete-instance] 11 "\n\n(fn RECORD &optional DB UNLOAD)"] initialize-instance ((record ebdb-record) &optional slots) #[770 "\300\301\302\303\211\211\211\211\211&\304\305#\262\306\307\"\2041\304\307\310\311!#\262\312\306\307\"!\210\313\314\315#\266\306\316\"\204P\304\316\310\317!#\262\312\306\316\"!\210\313\314\315#\266\"\207" [record ebdb-record-cache "" nil plist-put :cache plist-get :timestamp make-instance ebdb-field-timestamp ebdb-stamp-time eieio-oset dirty t :creation-date ebdb-field-creation-date] 12 "Initialize RECORD.\nAdds a cache to the cache slot, and ensures the 'timestamp and\n'creation-date slots are filled.\n\n(fn CL--CNM RECORD &optional SLOTS)"] ((record ebdb-record)) #[257 "\300!\211\203\211@\301\"\210A\266\202\202\210\302!\207" [ebdb-record-user-fields ebdb-init-field ebdb-record-set-sortkey] 6 "Initialize RECORD after loading or creation.\n\n(fn RECORD)"] ebdb-merge ((left ebdb-record) (right ebdb-record) &optional _auto) #[770 "\301\211\302\"\303\"\301\211\302\"\303\"\304\302\232\204%\305\"\203-\301\302\"\2022\301\302\"#\266\306!\210\304\307\310\311\301\n\307\"\301\n\307\"\"!#\266\301\312\"\204^\301\312\"\203\226\301\312\"\301\312\"\232\204\226\304\312\313\314\301 \312\"\205\201\315\301\f\312\"!\316\301\f\312\"\205\221\315\301 \312\"!Q##\266\266\207" [ebdb-default-notes-class slot-value creation-date timestamp eieio-oset time-less-p ebdb-stamp-time fields delete-dups append notes make-instance :notes ebdb-string " "] 20 "\n\n(fn LEFT RIGHT &optional AUTO)"] ebdb-stamp-time ((record ebdb-record)) #[257 "\300\301\302\"!\207" [ebdb-stamp-time slot-value timestamp] 5 "\n\n(fn RECORD)"] ebdb-record-field-slot-query (record-class &optional query alist) "Ask RECORD-CLASS for information about its interactively-settable fields.\nIf QUERY is nil, simply return ALIST, which is a full list of\nacceptable fields. Each list element is a cons of the form (SLOT\n. FIELDCLASS), meaning that RECORD-CLASS can accept fields of\nclass FIELDCLASS in SLOT.\n\nIf QUERY is non-nil, it should be a cons of either '(SLOT . nil),\nor '(nil . FIELDCLASS). The \"nil\" is the value to query for:\neither \"which slot can accept this field class\", or \"which\nfieldclass is appropriate for this slot\". The return value in\neither case is a cons with both slot and fieldclass filled in.\n\n(fn RECORD-CLASS &optional QUERY ALIST)" ebdb-record-insert-field (record field &optional slot) "Insert FIELD into RECORD.\nIf SLOT is given, insert FIELD into that slot. Otherwise, the\nslot will be found programmatically.\n\n(fn RECORD FIELD &optional SLOT)" ebdb-record-delete-field (record field &optional slot) "Delete FIELD from RECORD.\nIf SLOT is given, delete FIELD from that slot. Otherwise, the\nslot will be found programmatically.\n\n(fn RECORD FIELD &optional SLOT)" ebdb-record-change-field (record old-field &optional new-field) "Change RECORD's field OLD-FIELD.\nIf NEW-FIELD is given, OLD-FIELD will be replaced with NEW-FIELD.\nOtherwise, the user will be prompted to create a new field, using\nOLD-FIELD's values as defaults.\n\n(fn RECORD OLD-FIELD &optional NEW-FIELD)" ((record ebdb-record) (field ebdb-field) &optional slot) #[770 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\262\211\2033\211@\203,\310$\262A\266\202\202\210\203V\3111E\312#0\202P\210\313#\266\202\210\314\"\210\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-add-record-field (invalid-slot-type) object-add-to-list eieio-oset ebdb-init-field] 10 "Add FIELD to RECORD's SLOT.\n\n(fn RECORD FIELD &optional SLOT)"] (:around) ((record ebdb-record) (field ebdb-field) &optional slot) #[1027 "\211\206\300\301!\302\301!B\"@#\207" [ebdb-record-field-slot-query eieio-object-class nil] 9 "\n\n(fn CL--CNM RECORD FIELD &optional SLOT)"] ((record ebdb-record) (field ebdb-field) &optional slot) #[770 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\262\211\203.\211@\310$\210A\266\202\202\210\301\"<\203@\311#\210\202I\312\313#\266\314\"\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-remove-record-field object-remove-from-list eieio-oset nil ebdb-delete-field] 10 "Delete FIELD from RECORD's SLOT, or set SLOT to nil, if no FIELD.\n\n(fn RECORD FIELD &optional SLOT)"] (:around) ((record ebdb-record) (field ebdb-field) &optional slot) #[1027 "\211\206\300\301!\302\301!B\"@#\207" [ebdb-record-field-slot-query eieio-object-class nil] 9 "\n\n(fn CL--CNM RECORD FIELD &optional SLOT)"] ((record ebdb-record) (old-field ebdb-field) &optional new-field) #[770 "\301!\206\f\302\303#\232\203\205!\304\"\210\305\"\210\211\207" [ebdb-update-unchanged-records eieio-object-class ebdb-read nil ebdb-record-delete-field ebdb-record-insert-field] 8 "Change the values of FIELD belonging to RECORD.\n\n(fn RECORD OLD-FIELD &optional NEW-FIELD)"] ((_class (subclass ebdb-record)) &optional query alist) #[769 "\300\301\"\302\303\304\305\"\211\2031\211@\306@!\262\307\"\204*\310\311\"\204*\312BB\262A\266\202\202 \210:\203\202@\211\204cA\211\307\"\206\\\307\313\314\315 \"\"\"\206\\\316\317C\"\262\262\202}A\211\204z\211\236\206u\316\317C\"\262\202{\262\262\202\203\207" [append ((notes . ebdb-field-notes) (image . ebdb-field-image)) nil eieio-build-class-alist ebdb-field-user t intern rassq eql ebdb-org-field-tags fields ebdb-foo-in-list-p mapcar cdr signal ebdb-unacceptable-field] 14 "\n\n(fn CLASS &optional QUERY ALIST)"] ebdb-record-current-fields (record &optional f-list all) "Return an alist of all RECORD's current fields.\nEach element of the alist is a cons of (slot-name\n. field-instance), where slot-name is a symbol, and\nfield-instance is an instance of a subclass of `ebdb-field'.\nThese conses are collected in F-LIST.\n\nIf ALL is non-nil, really return all of RECORD's fields. If nil,\nonly return fields that are suitable for user editing.\n\n(fn RECORD &optional F-LIST ALL)" ((record ebdb-record) &optional f-list all) #[769 "\300\301\"\211\203\211@\301BB\262A\266\202\202\210\300\302\"\203+\302\300\302\"BB\262\203M\303\300\303\"BB\262\304\300\304\"BB\262\305\300\305\"BB\262\300\306\"\203^\306\300\306\"BB\262\210\207" [slot-value fields image timestamp creation-date uuid notes] 8 "This is the \"bottom-most\" implementation of this method.\n\n(fn RECORD &optional F-LIST ALL)"] cl-print-object ((record ebdb-record) stream) #[514 "\301\302\303\304!\305\306\"\307!>\204\310\311\312D\"\210\211\313H\262#\"\207" [cl-struct-ebdb-record-cache-tags princ format "#<%S %s>" eieio-object-class-name slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1] 11 "\n\n(fn RECORD STREAM)"] ebdb-record-related (record field) "Return the record related to RECORD, according to FIELD.\nThis method is implemented for role fields, and relation fields.\nIt is responsible for returning the related record as specified\nby the field, or else raising the error `ebdb-related-unfound'.\n\n(fn RECORD FIELD)" ((_record ebdb-record) (_field ebdb-field)) #[514 "\300\301\302\"\207" [signal ebdb-related-unfound ("Related record not found")] 5 "Provide a base method that raises `ebdb-related-unfound'.\n\n(fn RECORD FIELD)"] ebdb-location-current-time ((rec ebdb-record) (field ebdb-field-location)) #[514 "\211\300\301\"\203\302\303\304!\305\306\307\300\301\"##\202\310\311\312C\"\207" [slot-value timezone message "%s's current time is: %s" ebdb-string format-time-string "%c" nil signal ebdb-error "No timezone present"] 12 "Display the current time for REC.\nUses the timezone value present in FIELD, and raises an error if\nthere is no timezone value.\n\n(fn REC FIELD)"] ((record ebdb-record) (field ebdb-field-singleton) &optional _slot) #[1027 "\300\301!\"\211\203\211\211\203\211@\302\"\210A\266\202\202 \210\3031) 0\202/\210\304@\"\207" [ebdb-record-field eieio-object-class ebdb-record-delete-field (error) ebdb-record-insert-field] 10 "Prevent RECORD from having more than one instance of FIELD.\n\n(fn CL--CNM RECORD FIELD &optional SLOT)"] ebdb-field-image-get ((field ebdb-field-image) (record ebdb-record)) #[514 "\303\304\"\211;\203 \211\202\211\305=\203\306!\202\307\"\211\205;\310;\2039\311!\2031\202:\312 \n#\202:!\207" [ebdb-image ebdb-image-path ebdb-image-suffixes slot-value image name ebdb-string ebdb-field-image-function create-image file-name-absolute-p locate-file] 9 "Return the image for image field FIELD.\nThis function returns an actual image, suitable for display with\n`insert-image'.\n\n(fn FIELD RECORD)"] ebdb-field-image-function ((_field ebdb-field-image) (_record ebdb-record)) #[514 "\300\207" [nil] 3 "Return image data for RECORD from image field FIELD.\nThe return value of this function will be passed to\n`create-image', which see. It can either be an image file name,\nor actual image data.\n\n(fn FIELD RECORD)"] ebdb-field-phone-dial ((_record ebdb-record) (phone ebdb-field-phone)) #[514 "\211\300\301\302\303\"\205\304\305\302\303\"\"\302\306\"\205\307\302\306\"!\302\310\"\302\311\"\2052\304\312\302\311\"\"\260!\207" [browse-url "tel:" slot-value country-code format "+%d" area-code number-to-string number extension ";ext=%d"] 13 "Make some attempt to call this PHONE number.\n\n(fn RECORD PHONE)"] ebdb-field-url-browse ((_record ebdb-record) (field ebdb-field-url)) #[514 "\300\301\302\"!\207" [browse-url slot-value url] 6 "\n\n(fn RECORD FIELD)"] ebdb-field-anniversary-calendar ((_record ebdb-record) (field ebdb-field-anniversary)) #[514 "\300\301\"\302\303\304 !8\211\305\306\307\211\211A@@&\310\"\203$\307\202%\311\\\312 \210\313\314\315\311\316#C\"!\207" [slot-value date 5 decode-time current-time time-less-p encode-time 1 nil 0 calendar calendar-goto-date append seq-subseq 2] 13 "Go to the date of anniversary FIELD in the calendar.\nIf FIELD doesn't specify a year, use the current year.\n\n(fn RECORD FIELD)"] ebdb-field-anniversary-agenda ((_record ebdb-record) (field ebdb-field-anniversary)) #[514 "\300\301\"\302\303\304 !8\211\305\306\307\211\211A@@&\310\"\203$\307\202%\311\\\312\310\313\314@A@$\"\207" [slot-value date 5 decode-time current-time time-less-p encode-time 1 nil 0 org-agenda-list format "%d-%d-%d"] 13 "Go to the date of anniversary FIELD in the Org agenda.\nIf FIELD doesn't specify a year, use the current year.\n\n(fn RECORD FIELD)"] ebdb-field-anniv-diary-entry ((field ebdb-field-anniversary) (record ebdb-record)) #[514 "\300\301\"\302\303\304!\"\3058\203\306\202\307\300\310\"Q\311\302\3058\203&\312\202'\313#D\207" [slot-value date format "%s's " ebdb-string 2 "%d%s " "%s " label apply "(diary-anniversary %s %s %s)" "(diary-anniversary %s %s)"] 8 "Add a diary entry for FIELD's date.\n\n(fn FIELD RECORD)"] ebdb-record-entity-p eieio-make-class-predicate ebdb-record-entity ebdb-record-entity--eieio-childp eieio-make-child-predicate ebdb-record-entity-child-p make-obsolete "use (cl-typep ... \\='ebdb-record-entity) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-record) ((mail :initarg :mail :type (list-of ebdb-field-mail) :initform nil) (phone :initarg :phone :type (list-of ebdb-field-phone) :initform nil) (address :initarg :address :type (list-of ebdb-field-address) :initform nil) (organizations :initarg :organizations :type (list-of ebdb-field-role) :initform nil) (relations :initarg :relations :type (list-of ebdb-field-relation) :initform nil)) (:allow-nil-initform t :abstract t :documentation "An abstract class representing basic entities\n that have mail, phone and address fields.")] 6) #@76 You cannot create a new object of type `ebdb-record-entity'. (fn &rest _) (defalias 'ebdb-record-entity #[128 "\300\301!\207" [error "Class ebdb-record-entity is abstract"] 3 (#$ . 149011)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\304\310%\210\300\311\302\312\304\313%\210\300\314\302\315\304\316%\210\300\317\302\320\304\321%\210\300\322\302\323\304\324%\210\300\325\302\326\302\327%\210\330\331\332\331\333\302#\334#\210\300\331\302\335\302\336%\210\300\331\302\337\302\340%\210\330\341\332\341\342\302#\343#\210\300\341\302\344\302\345%\210\300\346\347\350\302\351%\210\330\352\353\354!\"\210\330\355\356\354!\"\210\330\357\355\"\210\360\357\361\362#\210\363\354\364\355#\365\354\366\367\370$\210\300\371\302\372\302\373%\210\300\374\302\375\302\376%\207" [cl-generic-define-method ebdb-init-record nil ((record ebdb-record-entity)) t #[514 "\300\301\"\211\203\211@\302\"\210A\266\202\202\210\300\303\"\211\203-\211@\302\"\210A\266\202\202\210\300\304\"\211\203D\211@\302\"\210A\266\202\2022\210 \207" [slot-value phone ebdb-init-field mail address] 7 "\n\n(fn CL--CNM RECORD)"] ebdb-read ((class (subclass ebdb-record-entity)) &optional slots) #[770 "\303\3042\3051\306!B\262\202 \210\307\304\237\"0\262\303\30426\3051/\306 !B\262\202%\210\307\304\237\"0\262\303\3042R\3051K\306\n!B\262\202A\210\307\304\237\"0\262\203a@\310\311\312#\266\313\314#\262\313\315#\262\313\316#\262\"\207" [ebdb-default-mail-class ebdb-default-phone-class ebdb-default-address-class nil --ebdb-loop-exit-- (quit ebdb-empty) ebdb-read throw eieio-oset priority primary plist-put :mail :phone :address] 11 "Prompt for the basic slot values of `ebdb-record-entity'.\n\n(fn CL--CNM CLASS &optional SLOTS)"] ebdb-delete-record ((record ebdb-record-entity) &optional _db unload) #[1026 "\300\301\"\211\203\211@\302#\210A\266\202\202\210\303!\211\2030\211@\302#\210A\266\202\202\210 \207" [slot-value mail ebdb-delete-field ebdb-record-user-fields] 10 "\n\n(fn CL--CNM RECORD &optional DB UNLOAD)"] ebdb-merge ((left ebdb-record-entity) (right ebdb-record-entity) &optional auto) #[1027 "\211\300\301\302\303\304\301\"\304\301\"\"!#\266\300\305\302\303\304\305\"\304\305\"\"!#\266\300\306\302\303\304\306\"\304\306\"\"!#\266#\207" [eieio-oset mail delete-dups append slot-value phone address] 16 "\n\n(fn CL--CNM LEFT RIGHT &optional AUTO)"] ebdb-record-field-slot-query ((class (subclass ebdb-record-entity)) &optional query alist) #[1026 "\300\301\"#\207" [append ((mail . ebdb-field-mail) (phone . ebdb-field-phone) (address . ebdb-field-address))] 10 "\n\n(fn CL--CNM CLASS &optional QUERY ALIST)"] ebdb-record-current-fields ((record ebdb-record-entity) &optional f-list all) #[1026 "\300\301\"\211\203\211@\301BB\262A\266\202\202\210\300\302\"\211\2032\211@\302BB\262A\266\202\202\210\300\303\"\211\203K\211@\303BB\262A\266\202\2027\266#\207" [slot-value mail phone address] 9 "\n\n(fn CL--CNM RECORD &optional F-LIST ALL)"] ebdb-record-change-name ((record ebdb-record-entity) (name ebdb-field-name)) #[514 "\301\302\"\203\303\301\302\"\302#\210\301\304\"\305!>\204#\306\307\310D\"\210\211\211\311\312!I\266\313\302#\207" [cl-struct-ebdb-record-cache-tags slot-value name ebdb-record-delete-field cache type-of signal wrong-type-argument ebdb-record-cache 1 ebdb-string ebdb-record-insert-field] 8 "\n\n(fn RECORD NAME)"] defalias ebdb-compose-mail cl-generic-define (records &rest args) "Prepare to compose a mail message to RECORDS.\nMail-sending MUAs can override this method to do extra setup\nbefore/after message composition, by using a &context specializer\non eg. the value of `read-mail-command'. The default\nimplementation turns RECORDS in a string of mail addresses, then\npasses that along with ARGS to `compose-mail'.\n\n(fn RECORDS &rest ARGS)" ((records list) &rest args) #[385 "\300\301\302#\303\"\207" [mapconcat ebdb-dwim-mail ", " ebdb-compose-mail] 6 "\n\n(fn RECORDS &rest ARGS)"] ((to string) &rest args) #[385 "\300\301#\207" [apply compose-mail] 6 "\n\n(fn TO &rest ARGS)"] ebdb-field-mail-compose (record mail &rest args) "Begin composing a message to RECORD's mail field MAIL.\nARGS are passed to `ebdb-compose-mail', and then to\n`compose-mail'.\n\n(fn RECORD MAIL &rest ARGS)" ((record ebdb-record-entity) (mail ebdb-field-mail) &rest args) #[642 "\300\301\302\"#\207" [apply ebdb-compose-mail ebdb-dwim-mail] 8 "\n\n(fn RECORD MAIL &rest ARGS)"] ebdb-record-insert-field (:before) ((record ebdb-record-entity) (field ebdb-field-mail-alias) &optional _slot) #[770 "\300\301\"\205 \302\301\"?\205!\303\304\"\211\205\305\301#\262\262\207" [slot-boundp address slot-value ebdb-record-one-mail t eieio-oset] 9 "After inserting a new alias field, prompt the user for which\n address to use with it.\n\n(fn RECORD FIELD &optional SLOT)"] ebdb-record-person-p eieio-make-class-predicate ebdb-record-person ebdb-record-person--eieio-childp eieio-make-child-predicate ebdb-record-person-child-p make-obsolete "use (cl-typep ... \\='ebdb-record-person) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-record-entity) ((name :initarg :name :type (or null ebdb-field-name-complex) :initform nil) (aka :initarg :aka :type (list-of ebdb-field-name) :initform nil :accessor ebdb-record-aka)) (:allow-nil-initform t :documentation "A record class representing a person.") ebdb-record-aka ((this ebdb-record-person)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp aka eieio-oref] 4 "Retrieve the slot `aka' from an object of class `ebdb-record-person'.\n\n(fn THIS)"] \(setf\ ebdb-record-aka\) (value (this ebdb-record-person)) #[514 "\300\301#\207" [eieio-oset aka] 6 "\n\n(fn VALUE THIS)"]] 7) #@75 Create a new object of class type `ebdb-record-person'. (fn &rest SLOTS) (defalias 'ebdb-record-person #[128 "\300\301\302#\207" [apply make-instance ebdb-record-person] 5 (#$ . 154851)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-person compiler-macro ebdb-record-person--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-record-person--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 155170)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\300\311\302\312\307\313%\210\300\314\302\315\307\316%\210\300\317\302\320\307\321%\210\300\322\302\323\307\324%\210\300\325\302\326\302\327%\210\300\330\302\331\302\332%\210\300\333\302\334\307\335%\210\300\336\302\337\302\340%\210\300\341\302\342\302\343%\210\300\341\302\344\302\345%\210\300\346\302\347\307\350%\210\300\346\302\351\307\352%\210\300\353\302\354\307\355%\210\356\357\360\361!\"\210\356\362\363\361!\"\210\356\364\362\"\210\365\364\366\367#\210\370\361\371\362#\372\361\373\374\375$\207" [cl-generic-define-method ebdb-string nil ((record ebdb-record-person)) #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1] 6 "Return a readable string label for RECORD.\n\n(fn RECORD)"] ebdb-read ((class (subclass ebdb-record-person)) &optional slots) t #[770 "\301\302\303\"\"\304\303#\"\207" [ebdb-default-name-class ebdb-read plist-get :name plist-put] 10 "Read the name slot for a \"person\" record.\n\n(fn CL--CNM CLASS &optional SLOTS)"] ebdb-init-record ((record ebdb-record-person)) #[514 "\211\301\302\"\2030\303\301\302\"\"\210\301\304\"\305!>\204#\306\307\310D\"\210\211\211\311\312\301\302\"!I\266\313\301\314\"\301\315\"\301\316\"#\211\203P\211@\303\"\210A\266\202\202>\266 \207" [cl-struct-ebdb-record-cache-tags slot-value name ebdb-init-field cache type-of signal wrong-type-argument ebdb-record-cache 1 ebdb-string append aka relations organizations] 11 "\n\n(fn CL--CNM RECORD)"] ebdb-delete-record ((record ebdb-record-person) &optional _db unload) #[1026 "\300\301\"\203\302\300\301\"#\210\303\300\304\"\300\305\"\300\306\"#\211\2034\211@\302#\210A\266\202\202\266 \207" [slot-value name ebdb-delete-field append aka relations organizations] 11 "\n\n(fn CL--CNM RECORD &optional DB UNLOAD)"] ebdb-merge ((left ebdb-record-person) (right ebdb-record-person) &optional auto) #[1027 "\203\301\302\303\304\"#\210\202\333\303\304\"\303\304\"\232\204\333\305\306\303\307\"\310!>\2044\311\312\313D\"\210\211\314H\262\303\307\"\310!>\204M\311\312\313D\"\210\211\314H\262#\315\305\316\303 \307\"\310!>\204k\311\312\313D\"\210\211\314H\262#!\203\255\317\303\304\"\"\210\315\305\320\303\n\307\"\310!>\204\226\311\312\313D\"\210\211\314H\262#!\203\332\301\302\303\304\"#\210\202\332\315\305\320\303 \307\"\310!>\204\305\311\312\313D\"\210\211\314H\262#!\203\332\301\302\303\304\"#\210\210\321\322\323\324\303\322\"\303\322\"\"!#\266\321\325\323\324\303\325\"\303\325\"\"!#\266#\207" [cl-struct-ebdb-record-cache-tags object-add-to-list aka slot-value name format "Merging %s with %s:" cache type-of signal wrong-type-argument ebdb-record-cache 1 yes-or-no-p "%s Use %s as primary name? " ebdb-record-change-name "%s Keep %s as an aka? " eieio-oset relations delete-dups append organizations] 16 "Merge person RIGHT into LEFT, and return LEFT.\n\n(fn CL--CNM LEFT RIGHT &optional AUTO)"] ebdb-record-field-slot-query ((class (subclass ebdb-record-person)) &optional query alist) #[1026 "\300\301\"#\207" [append ((aka . ebdb-field-name-complex) (aka . ebdb-field-name-simple) (relations . ebdb-field-relation) (organizations . ebdb-field-role))] 10 "\n\n(fn CL--CNM CLASS &optional QUERY ALIST)"] ebdb-record-firstname ((rec ebdb-record-person) &optional full) #[513 "\300\301\"\205\302\300\301\"\"\207" [slot-value name ebdb-name-given] 6 "\n\n(fn REC &optional FULL)"] ebdb-record-lastname ((rec ebdb-record-person)) #[257 "\300\301\"\205 \302\300\301\"!\207" [slot-value name ebdb-name-last] 5 "\n\n(fn REC)"] ebdb-record-current-fields ((record ebdb-record-person) &optional f-list all) #[1026 "\300\301\300\"BB\262\301\302\"\211\203#\211@\302BB\262A\266\202\202\210\301\303\"\211\203<\211@\303BB\262A\266\202\202(\210\301\304\"\211\203U\211@\304BB\262A\266\202\202A\266#\207" [name slot-value aka relations organizations] 9 "\n\n(fn CL--CNM RECORD &optional F-LIST ALL)"] ebdb-record-change-name ((record ebdb-record-person) (name-string string)) #[514 "\301\"\302\"\207" [ebdb-default-name-class ebdb-parse ebdb-record-change-name] 6 "\n\n(fn RECORD NAME-STRING)"] ebdb-record-related ((record ebdb-record-person) (field ebdb-field-relation)) #[514 "\301\302\"\303!\232\203\304\305\"\"\242\202\301\302\"\306\307\"\206'\310\311C\"\207" [ebdb-relation-hashtable slot-value rel-uuid ebdb-record-uuid rassq gethash ebdb-gethash uuid signal ebdb-related-unfound] 8 "Return the record that's related to RECORD according to FIELD.\nIf FIELD is owned by RECORD, return the record pointed to by\nFIELD's `rel-uuid' slot. Otherwise return the record that owns\nFIELD.\n\n(fn RECORD FIELD)"] ((_record ebdb-record-person) (field ebdb-field-role)) #[514 "\300\301\302\"\303\"\206\304\305\301\302\"C\"\207" [ebdb-gethash slot-value org-uuid uuid signal ebdb-related-unfound] 7 "\n\n(fn RECORD FIELD)"] ebdb-init-field ((name ebdb-field-name-simple) (record ebdb-record-person)) #[771 "\301\302\303!\304\305\306\"!#\203F\301\302\303!\304\305\306\"!#\305\307\"\310!>\204.\311\312\313D\"\210\211\211\314\314H\235\203>\211\202AB\262I\266 \207" [cl-struct-ebdb-record-cache-tags format "%s %s" ebdb-string ebdb-name-last slot-value name cache type-of signal wrong-type-argument ebdb-record-cache 2] 11 "\n\n(fn CL--CNM NAME RECORD)"] ((name ebdb-field-name-simple) (record ebdb-record-person)) #[771 "\300!\211\203\301\302!\303Q\"\210\210 \207" [ebdb-record-lastname ebdb-puthash ebdb-string " "] 8 "Add a \"nickname-plus-lastname\" to the hash table.\n\n(fn CL--CNM NAME RECORD)"] ebdb-delete-field ((name ebdb-field-name-simple) (record ebdb-record-person) &optional _unload) #[1027 "\301\302\303!\304\305\306\"!#\203m\305\307\"\310!>\204#\311\312\313D\"\210\211\314H\262\203m\305\307\"\310!>\204>\311\312\313D\"\210\211\211\314\315\301\302\303\n!\304\305 \306\"!#\305\307\"\310!>\204d\311\312\313D\"\210\211\314H\262\"I\266 \207" [cl-struct-ebdb-record-cache-tags format "%s %s" ebdb-string ebdb-name-last slot-value name cache type-of signal wrong-type-argument ebdb-record-cache 2 delete] 16 "\n\n(fn CL--CNM NAME RECORD &optional UNLOAD)"] defalias ebdb-field-domain-p eieio-make-class-predicate ebdb-field-domain ebdb-field-domain--eieio-childp eieio-make-child-predicate ebdb-field-domain-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-domain) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field) ((domain :initarg :domain :type string :initform "" :documentation) (actions :initform '(("Browse domain" . ebdb-field-domain-browse)))) (:human-readable "domain" :documentation "An organization's domain name. Useful for\n automatically constructing a homepage for the organization, or\n email addresses for member person records.")] 6) #@74 Create a new object of class type `ebdb-field-domain'. (fn &rest SLOTS) (defalias 'ebdb-field-domain #[128 "\300\301\302#\207" [apply make-instance ebdb-field-domain] 5 (#$ . 162444)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-domain compiler-macro ebdb-field-domain--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-domain--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 162758)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313\314!\"\210\311\315\316\314!\"\210\311\317\315\"\210\320\317\321\322#\210\323\314\324\315#\325\314\326\327\330$\207" [cl-generic-define-method ebdb-read nil ((domain (subclass ebdb-field-domain)) &optional slots obj) t #[1026 "\300\301\302\303\205\304\305\"\"##\207" [plist-put :domain ebdb-read-string "Domain" slot-value domain] 14 "\n\n(fn CL--CNM DOMAIN &optional SLOTS OBJ)"] ebdb-string ((domain ebdb-field-domain)) #[257 "\300\301\"\207" [slot-value domain] 4 "\n\n(fn DOMAIN)"] defalias ebdb-record-organization-p eieio-make-class-predicate ebdb-record-organization ebdb-record-organization--eieio-childp eieio-make-child-predicate ebdb-record-organization-child-p make-obsolete "use (cl-typep ... \\='ebdb-record-organization) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-record-entity) ((name :initarg :name :type (or null ebdb-field-name-simple) :initform nil :documentation "The name of this organization.") (domain :initarg :domain :type (or null ebdb-field-domain) :initform nil :documentation "The base domain name for this organization.\n This can be used to open the organization's web page, and\n also as a default for email addresses of people with roles\n tied to this organization.")) (:allow-nil-initform t :documentation "A record class representing an organization.")] 6) #@81 Create a new object of class type `ebdb-record-organization'. (fn &rest SLOTS) (defalias 'ebdb-record-organization #[128 "\300\301\302#\207" [apply make-instance ebdb-record-organization] 5 (#$ . 164435)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-organization compiler-macro ebdb-record-organization--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-record-organization--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 164784)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\304\310%\210\300\311\302\312\302\313%\210\300\314\302\315\304\316%\210\300\317\302\320\304\321%\210\300\322\302\323\304\324%\210\300\325\302\326\302\327%\210\300\330\302\331\304\332%\210\300\333\302\334\302\335%\210\300\333\302\336\304\337%\210\300\340\302\341\302\342%\210\300\343\302\344\302\345%\210\300\346\302\347\302\350%\210\300\351\302\352\302\353%\210\354\355\356\357!\"\210\354\360\361\357!\"\210\354\362\360\"\210\363\362\364\365#\210\366\357\367\360#\370\357\371\372\373$\207" [cl-generic-define-method ebdb-init-record nil ((record ebdb-record-organization)) t #[514 "\301\302\"\303\"\210\301\304\"\305!>\204\306\307\310D\"\210\211\211\311\312!I\266 \207" [cl-struct-ebdb-record-cache-tags slot-value name ebdb-init-field cache type-of signal wrong-type-argument ebdb-record-cache 1 ebdb-string] 9 "\n\n(fn CL--CNM RECORD)"] ebdb-delete-record ((org ebdb-record-organization) &optional _db unload) #[1026 "\301!\302\"\303\304\"\210\203?\204?\305\306\307\310 !\"!\203?\211\203>\211@\311\312\313\"\314\"\262\315\316#\210A\266\202\202\"\210 \207" [ebdb-org-hashtable ebdb-record-uuid gethash nil remhash yes-or-no-p format "Delete all roles associated with %s" ebdb-string ebdb-gethash slot-value record-uuid uuid ebdb-record-delete-field organizations] 13 "\n\n(fn CL--CNM ORG &optional DB UNLOAD)"] ebdb-string ((record ebdb-record-organization)) #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1] 6 "Return a string representation of RECORD.\n\n(fn RECORD)"] ebdb-read ((class (subclass ebdb-record-organization)) &optional slots) #[770 "\300\301\302\303\"#\3041\300\305!0\202\210\306\307\303#\262\211\203'\307\310#\262\"\207" [ebdb-read ebdb-field-name-simple plist-get :name (quit ebdb-empty) ebdb-field-domain nil plist-put :domain] 9 "\n\n(fn CL--CNM CLASS &optional SLOTS)"] ebdb-merge ((left ebdb-record-organization) (right ebdb-record-organization) &optional auto) #[1027 "\301\302\303!\"\302\303!\"\"\303!\204$\304\305\306\307\310\311\"!\"!\203-\312\310\311\"\"\210\310\313\"\203O\204D\304\305\314\310\313\"\"!\203O\315\313\310\313\"#\266\210\203\206\204h\304\305\316\307!\307 !#!\203\206\211\203\211@\211\315\317#\266A\266\202\202i\210\320#\210\266 \207" [ebdb-org-hashtable append gethash ebdb-record-uuid yes-or-no-p format "Use name %s? " ebdb-string slot-value name ebdb-record-change-name domain "Use domain %s? " eieio-oset "Move all person roles from %s to %s" org-uuid puthash] 14 "Merge organization RIGHT into LEFT, and return LEFT.\n\n(fn CL--CNM LEFT RIGHT &optional AUTO)"] ebdb-record-field-slot-query ((class (subclass ebdb-record-organization)) &optional query alist) #[1026 "\300\301\"#\207" [append ((domain . ebdb-field-domain))] 10 "\n\n(fn CL--CNM CLASS &optional QUERY ALIST)"] ebdb-record-change-name ((record ebdb-record-organization) (name-string string)) #[514 "\300\301\"\302\"\207" [ebdb-parse ebdb-field-name-simple ebdb-record-change-name] 6 "\n\n(fn RECORD NAME-STRING)"] ebdb-record-current-fields ((record ebdb-record-organization) &optional f-list all) #[1026 "\300\301\300\"BB\262\301\302\"\203\302\301\302\"BB\262\210#\207" [name slot-value domain] 9 "\n\n(fn CL--CNM RECORD &optional F-LIST ALL)"] ebdb-record-search ((record ebdb-record-organization) (_type (eql organization)) (regex string)) #[771 "\211\302\303\"\304!>\204\305\306\307D\"\210\211\310H\262\311\312\313#)\266\203\206@\302\314\"\205@\211\315\302\314\"!\311\312\313#)\266\203\207" [cl-struct-ebdb-record-cache-tags inhibit-changing-match-data slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1 nil t string-match domain ebdb-string] 10 "\n\n(fn RECORD TYPE REGEX)"] ((record ebdb-record-organization) (_type (eql mail)) (regexp string)) #[1028 "\301\302\"\211\203\303!\304\305\306#)\266\203\206 \207" [inhibit-changing-match-data slot-value domain ebdb-string nil t string-match] 12 "\n\n(fn CL--CNM RECORD TYPE REGEXP)"] ebdb-field-domain-browse ((_record ebdb-record-organization) (domain ebdb-field-domain)) #[514 "\300\301\"\211\205 \302\303P!\207" [slot-value domain browse-url "http://"] 6 "Construct a URL from field DOMAIN, and browse it.\n\n(fn RECORD DOMAIN)"] ebdb-record-adopt-role-fields ((record ebdb-record-person) (org ebdb-record-organization) &optional _prompt) #[770 "\301\302\"\301\303\"\304\211\205\203\211@\301\305\"\306!\230\203|\203|\307\310\"\211\203{\211@\311\301\312\"\313\"A@\262\203t\314!\304\310\315#)\266\203\203t\316\317\320\314 !\314!\314!$!\203t\321\312#\266\322\n\"\210\323 \"\210A\266\202\202%\210A\266\202\202\n\262\207" [inhibit-changing-match-data slot-value organizations domain nil org-uuid ebdb-record-uuid ebdb-record-mail t split-string mail "@" ebdb-string string-match yes-or-no-p format "Move %s's address %s to role at %s? " eieio-oset ebdb-record-delete-field ebdb-init-field] 17 "Go through all of RECORDs fields and see if any of them should\nbe moved to a role at ORG.\n\nCurrently only works for mail fields.\n\n(fn RECORD ORG &optional PROMPT)"] ebdb-record-related ((_record ebdb-record-organization) (field ebdb-field-role)) #[514 "\300\301\302\"\303\"\206\304\305\301\302\"C\"\207" [ebdb-gethash slot-value record-uuid uuid signal ebdb-related-unfound] 7 "\n\n(fn RECORD FIELD)"] ebdb-record-add-org-role ((record ebdb-record-person) (org ebdb-record-organization) &optional mail fields) #[1026 "\300\301\302\303!\304\303 !%\203&\211\203%\211@\305\306#\210A\266\202\202\210\2033\211\307\310#\266\311\312#\210\313\"\207" [make-instance ebdb-field-role :org-uuid ebdb-record-uuid :record-uuid object-add-to-list fields eieio-oset mail ebdb-record-insert-field organizations ebdb-init-field] 11 "Convenience function for creating a role relationship between RECORD and ORG.\n\nMAIL and/or FIELDS, if present, should be a list of field\ninstances to add as part of the role.\n\n(fn RECORD ORG &optional MAIL FIELDS)"] defalias ebdb-record-mailing-list-p eieio-make-class-predicate ebdb-record-mailing-list ebdb-record-mailing-list--eieio-childp eieio-make-child-predicate ebdb-record-mailing-list-child-p make-obsolete "use (cl-typep ... \\='ebdb-record-mailing-list) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-record eieio-named) ((name :type ebdb-field-name-simple :initarg :name :initform nil)) (:allow-nil-initform t :documentation "A record class representing a mailing list.")] 6) #@81 Create a new object of class type `ebdb-record-mailing-list'. (fn &rest SLOTS) (defalias 'ebdb-record-mailing-list #[128 "\300\301\302#\207" [apply make-instance ebdb-record-mailing-list] 5 (#$ . 171759)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-record-mailing-list compiler-macro ebdb-record-mailing-list--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-record-mailing-list--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 172108)]) (cl-generic-define-method 'ebdb-read nil '((_class (subclass ebdb-record-mailing-list)) &optional _db _slots) nil #[769 "\300\301!\207" [error "Mailing list records haven't been implemented yet"] 5 "\n\n(fn CLASS &optional DB SLOTS)"]) #@130 Ensure that UUID hasn't been seen before. If it has, raise an error containing the record that already has that uuid. (fn UUID) (defalias 'ebdb-check-uuid #[257 "\300\301\"\211\205 \302\303C\"\207" [ebdb-gethash uuid signal ebdb-duplicate-uuid] 5 (#$ . 172590)]) #@304 Create and return a new UUID. This depends on the value of `ebdb-uuid-function'. When that variable is a string, assume the string refers to a system executable. When a symbol, assume an Elisp function. If optional argument PREFIX is given, add that prefix to the uuid string. (fn &optional PREFIX) (defalias 'ebdb-make-uuid #[256 "\211\211\301\230\262?\205 \211\302P;\203 \303!\203 \304\303!!\202-\305!\203+ \202-\306 \307\310\301#P\207" [ebdb-uuid-function "" "-" executable-find shell-command-to-string functionp ebdb--make-uuid replace-regexp-in-string "[\n ]+"] 8 (#$ . 172864)]) #@45 Return string with random (version 4) UUID. (defalias 'ebdb--make-uuid #[0 "\301\302\303\304 \305 \306 \307 \310 \311 &!\302\312\313\314O\314\315O\316\317O\302\320\321\322\323\n\317\324O\317\"\325\"\326\"\"\324\327O\327\330O&\207" [user-mail-address md5 format "%s%s%s%s%s%s%s" random current-time user-uid emacs-pid user-full-name recent-keys "%s-%s-4%s-%s%s-%s" 0 8 12 13 16 "%x" logior logand string-to-number 18 191 128 20 32] 14 (#$ . 173474)]) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-db-p eieio-make-class-predicate ebdb-db ebdb-db--eieio-childp eieio-make-child-predicate ebdb-db-child-p make-obsolete "use (cl-typep ... \\='ebdb-db) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eieio-persistent) ((label :initarg :label :initform #1="" :type string) (uuid :initarg :uuid :initform nil :type (or null ebdb-field-uuid) :documentation "A unique identifier for this database.") (file-header-line :initform ";; EBDB file-persistent database") (sync-time :type (or null cons) :initarg :sync-time :initform nil :documentation "The date/time at which this database was last synced with its source.") (records :initarg :records :initform nil :type (list-of ebdb-record) :documentation "The records stored in this database.") (read-only :initarg :read-only :initform nil :type boolean :custom boolean :documentation "Is this database read-only?") (version :initarg :version :type string :initform "0.1" :documentation "The version number of this database.") (uuid-prefix :initarg :uuid-prefix :type string :initform #1# :custom string :documentation "A string prefix to be added to all UUIDs generated for\n records created in this database.") (buffer-char :initarg :buffer-char :type (or null character) :initform nil :custom (choice (const :tag "None" nil) (character :tag "Character")) :documentation "A single character used in the *EBDB* buffer to indicate the\n database(s) to which a record belongs.") (dirty :initarg :dirty :initform nil :type boolean :documentation "Set to t when the database has unsaved data.") (auto-save :initarg :auto-save :initform t :type boolean :custom boolean :documentation "Set to t to have this database auto save itself. Databases\n that are disabled or read-only will not be saved.") (disabled :initarg :disabled :initform nil :type boolean :custom boolean :documentation "When t, records will not be loaded from or saved to this\n database. Use `ebdb-disable-database' to disable the\n database immediately.") (record-class :initarg :record-class :type symbol :initform `,ebdb-default-record-class :custom symbol :documentation "The default EIEIO class for records in this database. Must\n be a subclass of `ebdb-record'.")) (:documentation "The base class for the EBDB database store. This class should\nnot be instantiated directly, subclass it instead." :allow-nil-initform t :abstract t)] 6) #@65 You cannot create a new object of type `ebdb-db'. (fn &rest _) (defalias 'ebdb-db #[128 "\300\301!\207" [error "Class ebdb-db is abstract"] 3 (#$ . 176501)]) (cl-generic-define-method 'initialize-instance nil '((db ebdb-db) &optional slots) t #[770 "\300\301\"\302\303\304\"\203\305\304\"\204%\306\304\307\310\311\312\305\f\313\"!##\266\203B@\301=\204:\314@A@#\262AA\262\202%\203M\314\315#\262\"\207" [plist-get :object-name nil slot-boundp uuid slot-value eieio-oset make-instance ebdb-field-uuid :uuid ebdb-make-uuid uuid-prefix plist-put :label] 16 "Make sure DB has a uuid.\nAlso switch old :object-name slot name to :label.\n\n(fn CL--CNM DB &optional SLOTS)"]) #@59 Make an auto save file name from FILENAME. (fn FILENAME) (defalias 'ebdb-db-make-auto-save-file-name #[257 "\300!\301!\302\303!\302R\207" [expand-file-name file-name-directory "#" file-name-nondirectory] 6 (#$ . 177204)]) (cl-generic-define-method 'ebdb-db-do-auto-save nil '((db ebdb-db)) nil #[257 "\300\301\"\302!\303\"\210\304\301#\262\207" [slot-value file ebdb-db-make-auto-save-file-name eieio-persistent-save eieio-oset] 8 "\n\n(fn DB)"]) #@68 Auto-save all EBDB databases. Run as a hook in the `auto-save-hook (defalias 'ebdb-auto-save-databases #[0 "\211\2055\211@\211\301\302\"\203-\301\303\"\204-\301\304\"\204-\305!\203-\306!\204-\307!\210\210A\266\202\202\207" [ebdb-db-list slot-value auto-save disabled read-only ebdb-db-dirty ebdb-db-unsynced ebdb-db-do-auto-save] 6 (#$ . 177669)]) (byte-code "\300\301\302\"\210\303\304\305\306\305\307%\210\303\310\305\311\305\312%\210\303\313\305\314\305\315%\210\316\317\320\317\321\305#\322#\210\303\317\305\323\305\324%\210\303\325\305\326\305\327%\207" [add-hook auto-save-hook ebdb-auto-save-databases cl-generic-define-method ebdb-db-unsynced nil ((db ebdb-db)) #[257 "\300\301\302\303\"!!\304\305!\203\211\3068\262\202\3068\211\205%\307\302\310\"\"\207" [file-attributes expand-file-name slot-value file fboundp file-attribute-modification-time 5 time-less-p sync-time] 7 "Check if DB is out of sync.\nReturns t if DB's persistence file has been accessed since the\nlast time DB was loaded.\n\nThis is the base implementation, which only checks if DB's\npersistence file has been accessed. Subclasses should combine\nthis check with their own check to see if their records are\nsomehow out of sync.\n\n\"Unsynced\" is different from \"dirty\". Dirty just means the\nDB has unsaved changes. Unsynced means that saving those\nchanges (or re-loading the database from its source) would\noverwrite data somewhere.\n\n(fn DB)"] ebdb-db-dirty ((db ebdb-db)) #[257 "\300\301\"\206 \302\300\303\"!\207" [slot-value dirty ebdb-dirty-records records] 5 "Return t if DB is marked dirty, or contains any dirty records.\n\n(fn DB)"] ebdb-db-load ((db ebdb-db)) #[257 "\300\301\302\"\"\207" [ebdb-db-load-records slot-value records] 6 "\n\n(fn DB)"] defalias ebdb-db-load-records cl-generic-define (db records) "Load RECORDS into DB.\nThis method is responsible for adding DB to records' caches,\nchecking their uuid, and hashing the uuid. It happens at two\ndifferent points: after loading DB, and when adding a record to\nDB.\n\n(fn DB RECORDS)" ((db ebdb-db) records) #[514 "\211\211\203=\211@\3021K\203;\303\304\"\305!>\204#\306\307\310D\"\210\211\211\311\311H\235\2033\211\2026B\262I\266\312\313!!\210\314\313!\"0\2025\211A@\315\316\317\320#\316\317\320#\232\320\211\303\304\"\305!>\204o\306\307\310D\"\210\211\311H\262\211\203\213\211@\303\321\"\203\204\320\262A\266\202\202t\210\204\235\322\323#\204\235\320\262\203\245\202\247\262\203\262\202\263\262\204\300\324 #\262\314\313!\"\210\303\304\"\305!>\204\332\306\307\310D\"\210\211\311H\262\211\205/\211@\325\326#\210\327\326#\210\211\203\"\211\303\304\"\305!>\204\n\306\307\310D\"\210\211\211\311\311H\235\203\211\202B\262I\266\330\315#\210A\266\202\202\337\262\266\205\262\210A\266\202\202\315\207" [cl-struct-ebdb-record-cache-tags ebdb-auto-merge-records (ebdb-duplicate-uuid) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-check-uuid ebdb-record-uuid ebdb-puthash t clone :cache nil read-only ebdb-record-compare timestamp ebdb-merge object-remove-from-list records object-add-to-list ebdb-delete-record] 20 "\n\n(fn DB RECORDS)"] ebdb-db-unload ((db ebdb-db)) #[257 "\301\302\"\211\205\215\211@\301\303\"\304!>\204\305\306\307D\"\210\211\310H\262G\311U\2031\312\313#\210\202\206\203\206\301\303\"\304!>\204H\305\306\307D\"\210\211\310H\262\203\206\301\303\"\304!>\204c\305\306\307D\"\210\211\211\310\314\301\303\"\304!>\204}\305\306\307D\"\210\211\310H\262\"I\266A\266\202\202\207" [cl-struct-ebdb-record-cache-tags slot-value records cache type-of signal wrong-type-argument ebdb-record-cache 7 1 ebdb-delete-record t delete] 14 "Unload database DB.\nThis involves going through DB's records and removing each one\nthat doesn't belong to a different database.\n\n(fn DB)"]] 6) #@148 Reload DB. This consists of unloading all DB's records, re-reading its database definition from file, and then reloading all the records. (fn DB) (defalias 'ebdb-db-reload #[257 "\301\"\302!\210\303\304\305\"\306\307#\262\211\233\240\210\310!\210\311\304\312\"!\207" [ebdb-db-list cl-position ebdb-db-unload eieio-persistent-read slot-value file ebdb-db t ebdb-db-load ebdb-initialize records] 6 (#$ . 181622)]) (byte-code "\300\301\302\303\302\304%\210\300\305\306\307\302\310%\210\300\305\311\312\302\313%\210\314\315\316\315\317\302#\320#\210\300\315\302\321\302\322%\210\314\323\316\323\324\302#\325#\210\300\323\326\327\302\330%\210\300\323\302\331\302\332%\210\300\323\333\334\302\335%\210\314\336\316\336\337\302#\340#\210\314\341\316\341\342\302#\343#\210\300\336\344\345\302\346%\210\300\341\347\350\302\351%\210\300\336\302\352\302\353%\210\300\341\302\354\302\355%\210\300\356\357\360\302\361%\210\300\362\363\364\302\365%\210\300\366\302\367\302\370%\210\314\371\316\371\372\302#\373#\210\300\371\302\374\302\375%\210\300\376\302\377\302\201@%\207" [cl-generic-define-method ebdb-record-compare nil ((left ebdb-record) (right ebdb-record) (_test (eql timestamp))) #[771 "\300\211\301\"\301\"\300\211\301\"\301\"\232\206\302\"\207" [slot-value timestamp time-less-p] 8 "Test if record LEFT is newer than record RIGHT.\n\n(fn LEFT RIGHT TEST)"] ebdb-db-load (:after) ((db ebdb-db)) #[257 "\211\300\301\302 #\266\303\304\"\207" [eieio-oset sync-time current-time run-hook-with-args ebdb-after-read-db-hook] 6 "\n\n(fn DB)"] (:before) ((db ebdb-db)) #[257 "\300\301\"\207" [run-hook-with-args ebdb-before-read-db-hook] 4 "\n\n(fn DB)"] defalias ebdb-db-editable cl-generic-define (db &optional noerror reload) "If DB can't be edited, signal an error.\nThis method is called before most operations that would alter DB.\n\nWith optional argument NOERROR, return nil instead of signalling\nan error. With optional argument RELOAD, reload DB if it is out\nof sync but has no local modifications.\n\n(fn DB &optional NOERROR RELOAD)" ((db ebdb-db) &optional noerror reload) #[769 "\300\301\"\203 \302\2023\300\303\"\203\304\2023\305!\2032\306!\204.\211\203.\307!\210\310\2023\311\2023\310\211?\206B?\205B\312C\"\207" [slot-value read-only ebdb-readonly-db disabled ebdb-disabled-db ebdb-db-unsynced ebdb-db-dirty ebdb-db-reload nil ebdb-unsynced-db signal] 7 "\n\n(fn DB &optional NOERROR RELOAD)"] ebdb-db-save ((db ebdb-db) &optional prompt force) "Save DB to its persistence file.\nWhen PROMPT is non-nil, prompt the user before saving (currently\nunimplemented). When FORCE is non-nil, save regardless of\nwhether the database is dirty or not, and ignore all database\nerrors.\n\nThis method is only responsible for saving the database\ndefinition to disk. Database subclasses are responsible for\nsaving or otherwise persisting their records, and setting\ntheir :records slot to nil before calling this method with\n`cl-call-next-method'. They can either catch errors thrown by\nthe persistent save, or allow them to propagate.\n\n(fn (db ebdb-db) &optional PROMPT FORCE)" (:before) ((db ebdb-db) &optional _prompt force) #[769 "\211?\205\300!\205\301!\207" [ebdb-db-dirty ebdb-db-editable] 5 "Prepare DB to be saved.\n\n(fn DB &optional PROMPT FORCE)"] ((db ebdb-db) &optional _prompt force) #[769 "\302\303\304\"!? \204\204\303\305\"\205j\306\305\307#\266\211\2037\211@\211\306\305\307#\266A\266\202\202\"\210\3101D\311!0\202j\306\305\312#\266\211\203c\211@\211\306\305\312#\266A\266\202\202N\210\313\314\"\262\207" [ebdb-vacuum-databases ebdb-print-object-name ebdb-dirty-records slot-value records dirty eieio-oset nil (error) eieio-persistent-save t signal error] 14 "Mark DB and all its records as \"clean\" after saving.\n\n(fn DB &optional PROMPT FORCE)"] (:after) ((db ebdb-db) &optional _prompt _force) #[769 "\300\301\302\"!\303\304\305 #\266\306!\205\307!\207" [ebdb-db-make-auto-save-file-name slot-value file eieio-oset sync-time current-time file-exists-p delete-file] 9 "After saving DB, also delete its auto-save file, if any.\n\n(fn DB &optional PROMPT FORCE)"] ebdb-db-add-record (db record) "Associate RECORD with DB.\n\n(fn DB RECORD)" ebdb-db-remove-record (db record) "Disassociate RECORD from DB.\n\n(fn DB RECORD)" (:before) ((db ebdb-db) _record) #[514 "\300!\207" [ebdb-db-editable] 4 "\n\n(fn DB RECORD)"] (:before) ((db ebdb-db) _record) #[514 "\300!\207" [ebdb-db-editable] 4 "\n\n(fn DB RECORD)"] ((db ebdb-db) record) #[514 "\301\302\"\204 \211\303\302\304\305\306\307\301\n\310\"!##\266\311\312!\"\210\313\314#\210\203V\301\315\"\316!>\204>\317\320\321D\"\210\211\211\322\322H\235\203N\211\202QB\262I\266\303\323\324#\266\207" [cl-struct-ebdb-record-cache-tags slot-value uuid eieio-oset make-instance ebdb-field-uuid :uuid ebdb-make-uuid uuid-prefix ebdb-puthash ebdb-record-uuid object-add-to-list records cache type-of signal wrong-type-argument ebdb-record-cache 7 dirty t] 13 "\n\n(fn DB RECORD)"] ((db ebdb-db) record) #[514 "\301\302#\210\203[\303\304\"\305!>\204\306\307\310D\"\210\211\311H\262\203[\303\304\"\305!>\2048\306\307\310D\"\210\211\211\311\312\303\304\"\305!>\204R\306\307\310D\"\210\211\311H\262\"I\266\313\314\315#\266\207" [cl-struct-ebdb-record-cache-tags object-remove-from-list records slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 delete eieio-oset dirty t] 13 "\n\n(fn DB RECORD)"] ebdb-db-add-record-field (:before) ((db ebdb-db) record _slot _field) #[1028 "\300!\210\301!\207" [ebdb-db-editable ebdb-stamp-time] 6 "\n\n(fn DB RECORD SLOT FIELD)"] ebdb-db-remove-record-field (:before) ((db ebdb-db) record _slot _field) #[1028 "\300!\210\301!\207" [ebdb-db-editable ebdb-stamp-time] 6 "\n\n(fn DB RECORD SLOT FIELD)"] ebdb-string ((db ebdb-db)) #[257 "\300\301\302\303\"\"\207" [format "Database: %s" slot-value file] 6 "\n\n(fn DB)"] ebdb-db-disable (db) "Disable DB.\nDB will be unconditionally saved to disk as part of the disable\nprocess.\n\n(fn DB)" ((db ebdb-db)) #[257 "\211\300\301\302#\266\303\304\302#\210\305!\207" [eieio-oset disabled t ebdb-db-save nil ebdb-db-unload] 6 "\n\n(fn DB)"] ebdb-db-customize ((db ebdb-db)) #[257 "\300!\207" [eieio-customize-object] 3 "\n\n(fn DB)"]] 6) #@69 Use the customization interface to edit slot values of DB. (fn DB) (defalias 'ebdb-customize-database #[257 "\300!\207" [ebdb-db-customize] 3 (#$ . 187991) (byte-code "\300 C\207" [ebdb-prompt-for-db] 1)]) (byte-code "\300\301\302\303\304\305%\210\306\307\310\311!\"\210\306\312\313\311!\"\210\306\314\312\"\210\315\314\316\317#\210\320\311\321\312#\322\311\323\302\324$\207" [cl-generic-define-method eieio-done-customizing nil ((db ebdb-db)) t #[514 "\211\300\301\302#\266 \207" [eieio-oset dirty t] 7 "\n\n(fn CL--CNM DB)"] defalias ebdb-db-file-p eieio-make-class-predicate ebdb-db-file ebdb-db-file--eieio-childp eieio-make-child-predicate ebdb-db-file-child-p make-obsolete "use (cl-typep ... \\='ebdb-db-file) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-db) (:documentation "A `ebdb-db' subclass that saves records\n directly in its persistence file.")] 6) #@69 Create a new object of class type `ebdb-db-file'. (fn &rest SLOTS) (defalias 'ebdb-db-file #[128 "\300\301\302#\207" [apply make-instance ebdb-db-file] 5 (#$ . 188909)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-db-file compiler-macro ebdb-db-file--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-db-file--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 189198)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\300\311\302\312\307\313%\210\300\314\302\315\307\316%\210\300\317\302\320\302\321%\210\300\322\302\323\302\324%\210\300\325\302\326\307\327%\207" [cl-generic-define-method cl-print-object nil ((db ebdb-db) stream) #[514 "\300\301\302\303!\304\305\"\205\306\305\"\306\307\"G$\"\207" [princ format "#<%S %s %d records>" eieio-object-class-name slot-boundp file slot-value records] 10 "\n\n(fn DB STREAM)"] initialize-instance ((db ebdb-db-file) &optional slots) t #[770 "\300\301\302\"P\303\304#\262\"\207" ["File: " plist-get :file plist-put :label] 8 "\n\n(fn CL--CNM DB &optional SLOTS)"] ebdb-db-add-record ((db ebdb-db-file) record) #[771 "\211\300\301\302#\266\300\301\302#\266 \207" [eieio-oset dirty t] 8 "Mark DB and RECORD as \"dirty\" until saved.\n\n(fn CL--CNM DB RECORD)"] ebdb-db-remove-record ((db ebdb-db-file) _record) #[771 "\300\301\302#\266 \207" [eieio-oset dirty t] 8 "Mark DB as \"dirty\" until saved.\n\n(fn CL--CNM DB RECORD)"] ebdb-db-add-record-field ((db ebdb-db-file) record _slot field) #[1028 "\300\301\302#\266\300\301\302#\266\207" [eieio-oset dirty t] 9 "\n\n(fn DB RECORD SLOT FIELD)"] ebdb-db-remove-record-field ((db ebdb-db-file) record _slot _field) #[1028 "\300\301\302#\266\300\301\302#\266\302\207" [eieio-oset dirty t] 9 "\n\n(fn DB RECORD SLOT FIELD)"] object-write ((record ebdb-record) &optional comment) #[770 "\300\301\302#\"\207" [clone :cache nil] 7 "Don't write RECORD's cache to file.\n\n(fn CL--CNM RECORD &optional COMMENT)"]] 6) #@36 Set all internal EBDB vars to nil. (defalias 'ebdb-clear-vars #[0 "\305\211\306\n!\210\306 !\210\306\f!\207" [ebdb-db-list ebdb-record-tracker ebdb-org-hashtable ebdb-hashtable ebdb-relation-hashtable nil clrhash] 3 (#$ . 191028)]) #@69 Move RECORD from its existing database to TO-DB. (fn RECORD TO-DB) (defalias 'ebdb-move-record #[514 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\262@\211\232?\205)\310\"\210\311\"\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-add-record ebdb-db-remove-record] 7 (#$ . 191268)]) #@44 Copy RECORD into TO-DB. (fn RECORD TO-DB) (defalias 'ebdb-copy-record #[514 "\300\"\207" [ebdb-db-add-record] 5 (#$ . 191645)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\306\301\304\311\304\312%\207" [defalias ebdb-foo-in-list-p cl-generic-define (foo list) nil "Check if FOO (a class type or class instance) is in LIST.\n\n(fn FOO LIST)" cl-generic-define-method ((cls (subclass ebdb-field)) list) #[514 "\30022>\203\301\300\"\210\211\211\205/\211@\302!\203(\303\"\203(\301\300\"\210A\266\202\202\2620\207" [member throw class-p child-of-class-p] 7 "Check if CLS belongs to one of the classes in LIST.\nCLS is \"in\" list if its class name appears directly in the\nlist, or if it is a subclass of one of the classes in LIST.\nReturn CLS, or nil.\n\n(fn CLS LIST)"] ((obj ebdb-field) list) #[514 "\300!\301\"\206\314\3022\314\303>\203\304\305\"\204\307\306>\203(\304\307\"\204\307\310>\2035\304\311\"\204\307\312>\203B\304\313\"\204\307\314>\203O\304\315\"\204\307\316>\203\\\304\317\"\204\307\320>\203r\304\305\"\203r\321\322\"\323=\204\307\324>\203\210\304\305\"\203\210\321\322\"\325=\204\307\326>\203\236\304\305\"\203\236\321\322\"\325=\203\307\327>\203\262\304\307\"\203\262\321\325\"\204\307\330>\205\313\304\307\"\205\313\321\325\"?\205\313\331\302\"0\207" [eieio-object-class-name ebdb-foo-in-list-p member mail object-of-class-p ebdb-field-mail role ebdb-field-role phone ebdb-field-phone address ebdb-field-address notes ebdb-field-notes tags ebdb-field-tags mail-primary slot-value priority primary mail-defunct defunct mail-not-defunct role-defunct role-not-defunct throw] 6 "Check if OBJ belongs to one of the classes in LIST.\nOBJ is \"in\" list if its class name appears directly in the\nlist, or if it is a subclass of one of the classes in LIST, or if\none of the symbols in LIST matches it in some other way. Return\nthe class symbol of OBJ, or nil.\n\n(fn OBJ LIST)"]] 6) #@58 Return all databases marked "dirty". (fn &optional DBS) (defalias 'ebdb-dirty-dbs #[256 "\301\206\211\203\211@\302!\203\211B\262A\266\202\202\210\211\207" [ebdb-db-list nil ebdb-db-dirty] 6 (#$ . 193659)]) #@82 Return any databases that are out of sync with their source. (fn &optional DBS) (defalias 'ebdb-unsynced-dbs #[256 "\301\206\211\203\211@\302!\203\211B\262A\266\202\202\210\211\207" [ebdb-db-list nil ebdb-db-unsynced] 6 (#$ . 193886)]) #@282 Prompt for a single record, and return it. If RECORDS is a list of records, offer choices from that list. If CLASS is given, only offer choices that are an instance of that class, or its subclasses. If PROMPT is given, use that as the prompt. (fn &optional RECORDS CLASS PROMPT) (defalias 'ebdb-prompt-for-record #[768 "\206+\302\211\204 \303 \210\203(\304\305\306\307\310\311\"\312\"\313\314% \"\266\202\202+ \266\202\315\316\203D\304\305\306\317\310\311\n!\320\"\313\314%\"\202E\"\321\206L\322\"\323\324\"A\325\"\207" [ebdb-db-list ebdb-record-tracker nil ebdb-load seq-filter make-byte-code 257 "\301\203 \302\300\"\207\303\300\"\207" vconcat vector [object-of-class-p same-class-p] 4 "\n\n(fn R)" mapcar #[257 "\300!\301!B\207" [ebdb-string ebdb-record-uuid] 4 "\n\n(fn R)"] "\301\300\"\207" [object-of-class-p] completing-read "Choose record: " ebdb-gethash assoc-string uuid] 13 (#$ . 194144)]) #@103 Prompt the user for a field from FIELDS. Returns a list of ("label" slot . field-class). (fn FIELDS) (defalias 'ebdb-prompt-for-field-type #[257 "\301\211\211\211\2030\211@\211A\262\302=\204)\303=\204)\304=\204)\305!DB\262A\266\202\202\210\211\203H\211@\211\306\302BDB\262A\266\202\2022\210\307\310\"\262\311\"\206[\211\306\302BD\207" [ebdb-user-label-list nil ebdb-field-user-simple ebdb-field-creation-date ebdb-field-timestamp ebdb-field-readable-name fields completing-read "Choose field type: " assoc] 9 (#$ . 195082)]) #@237 Prompt the user to choose a database. Possible choices come from `ebdb-db-list', or from DB-LIST, if that argument is given. If SHORTCUT is non-nil, don't bother prompting if there's only one database. (fn &optional DB-LIST SHORTCUT) (defalias 'ebdb-prompt-for-db #[512 "\204 \204 \301 \210\206\302\203!G\303U\203!@\2022\304\305\302\306\307\"\310$\262\311\312#\207" [ebdb-db-list ebdb-load nil 1 ebdb-read-string "Choose a database" mapcar #[257 "\300\301\"\207" [slot-value label] 4 "\n\n(fn D)"] t object-assoc label] 10 (#$ . 195642)]) #@461 Return a single mail address to use for RECORD. If RECORD only has one address, return that directly. If PROMPT is non-nil, ask the user which address to use. Otherwise, return the record's primary address, or the first of the list of addresses, if none are primary. If PRIMARY-ONLY is non-nil, return nil if RECORD has no primary address. NO-ROLES and DEFUNCT function as in `ebdb-record-mail'. (fn RECORD &optional PROMPT PRIMARY-ONLY NO-ROLES DEFUNCT) (defalias 'ebdb-record-one-mail #[1281 "\300\301$\211\205I\211G\302U\203\211@\202I\2033\303\304\"\305\306\307\310\311 !\"\301\312$\"A\262\202I\203?\313\314\315#\202I\313\314\315#\206I\211@\207" [ebdb-record-mail nil 1 mapcar #[257 "\300!B\207" [ebdb-string] 3 "\n\n(fn M)"] assoc ebdb-read-string format "Mail address for %s: " ebdb-string t object-assoc primary priority] 13 (#$ . 196210)]) #@115 Return all records with unsaved changes. If RECORDS are given, only search those records. (fn &optional RECORDS) (defalias 'ebdb-dirty-records #[256 "\301\302\206\"\207" [ebdb-record-tracker seq-filter #[257 "\300\301\"\207" [slot-value dirty] 4 "\n\n(fn R)"]] 4 (#$ . 197092)]) #@15 (fn RECORD) (defalias 'ebdb-record-user-fields #[257 "\300\301\"\207" [slot-value fields] 4 (#$ . 197383)]) #@21 (fn RECORD LABEL) (defalias 'ebdb-record-user-field #[514 "\300;\203\n\202 \301!\302\303!#\207" [object-assoc symbol-name label ebdb-record-user-fields] 7 (#$ . 197500)]) #@31 (fn RECORD &optional LABEL) (defalias 'ebdb-record-address #[513 "\300\301\"\203\302\303#\202\211\207" [slot-value address object-assoc label] 7 (#$ . 197685)]) #@31 (fn RECORD &optional LABEL) (defalias 'ebdb-record-phone #[513 "\300\301\"\203\302\303#\202\211\207" [slot-value phone object-assoc label] 7 (#$ . 197862)]) #@317 Return a list of all RECORD's mail fields. If NO-ROLES is non-nil, exclude mail fields from RECORD's roles. If LABEL is a string, return the mail with that label. If DEFUNCT is non-nil, also consider RECORD's defunct mail addresses. Sort mails by descending priority. (fn RECORD &optional NO-ROLES LABEL DEFUNCT) (defalias 'ebdb-record-mail #[1025 "\300\301\"\204;\302\303\"\203;\300\303\"\211\203:\211@\300\301\"\2033\204+\300\304\"\2043\300\301\"B\262A\266\202\202\210\204E\305\306\"\262\203Q\307\310#\202W\311\312!\313\"\207" [slot-value mail slot-exists-p organizations defunct seq-filter #[257 "\300\301\"\302=?\207" [slot-value priority defunct] 4 "\n\n(fn M)"] object-assoc label sort copy-sequence ebdb-field-compare] 10 (#$ . 198036)]) #@517 Return a string to use as the mail address of RECORD. However, if both the first name and last name are constituents of the address as in John.Doe@Some.Host, and `ebdb-mail-avoid-redundancy' is non-nil, then the address is used as is. If `ebdb-mail-avoid-redundancy' is 'mail-only the name is never included. MAIL may be a mail address to be used for RECORD. If MAIL is nil use RECORD's primary mail address. If MAIL is the symbol `prompt', prompt the user for a mail address to use. (fn RECORD &optional MAIL) (defalias 'ebdb-dwim-mail #[513 "\303!\204\304\305=\306#\262\211\204\307\310!\210\311\312\"\2066\311\313\"\314!>\2041\315\316\317D\"\210\211\320H\262\311\321\" \322=\204b \203f\323\324\325\326#!\324\327\326\330\331\"@#\332\306\333#)\266\203\203f\332\202k\206k\332\211\203\211\324\334\335#\262\336\333\337\"\203\202\340\202\203\341#\202\212\207" [cl-struct-ebdb-record-cache-tags ebdb-mail-avoid-redundancy inhibit-changing-match-data ebdb-field-mail-p ebdb-record-one-mail prompt t error "Record has no mail addresses" slot-value aka cache type-of signal wrong-type-argument ebdb-record-cache 1 mail mail-only regexp-quote replace-regexp-in-string " " "" "[-._]" split-string "@" nil string-match "[\\\"]" "\\\\\\&" format "[][[:cntrl:][:punct:][:nonascii:]]" "\"%s\" <%s>" "%s <%s>"] 11 (#$ . 198821)]) #@260 Complete text at point as a mail "dwim" string. The completed strings are of the form "Firstname Lastname ". For use in `completion-at-point-functions' in `message-mode' or `mail-mode'. Also see the variable `ebdb-ignore-redundant-mails'. (defalias 'ebdb-mail-dwim-completion-at-point-function #[0 "\301\302 )\205%\212\303\304\305 \306#\210\307\225)\212\310 b\210\211`])\311\312\313DF\266\202\207" [mail-abbrev-mode-regexp "^\\(Resent-\\)?\\(To\\|B?Cc\\|Reply-To\\|From\\|Mail-Followup-To\\|Mail-Copies-To\\):" mail-abbrev-in-expansion-header-p re-search-backward ",[[:blank:]]?\\|:[[:blank:]]?" line-beginning-position t 0 line-end-position ebdb-mail-dwim-collection-function :exclusive no] 7 (#$ . 200188)]) #@72 Function that pretends to be a completion table. (fn STR PRED ACTION) (defalias 'ebdb-mail-dwim-collection-function #[771 "\302\211\303=\203\f\304\202\305 $)\207" [completion-ignore-case ebdb-dwim-completion-cache t metadata (metadata (category . ebdb-contact)) complete-with-action] 8 (#$ . 200928)]) (byte-code "\301\302\303\304\305BE\"\207" [ebdb-complete-mail-allow-cycling add-to-list completion-category-defaults ebdb-contact (styles substring basic) cycle] 6) #@161 Function used as a completion table for EBDB records. STR is used to search the database. The return value is the completed name string. (fn STR PRED ACTION) (defalias 'ebdb-record-completion-table #[771 "\305P\306\307\211\310\230\262\203:\311\211\n\204\312 \210\2034\313\314\315\316\317\320\"\321\"\322\323% \"\266\202\202\202 \266\202\202\202\324\311\211\n\204D\312 \210\203_\313\314\315\316\317\320\"\321\"\322\323% \"\266\202\202b \266\202\325\326D\327D\330DE\306\314\315\331\317\320\f!\332\"\333\334%\f\"\"\"\"\335=\203\215\336\202\225\337$)\207" [ebdb-case-fold-search completion-ignore-case ebdb-db-list ebdb-record-tracker ebdb-hash-extra-predicates "^" mapcar ebdb-string "" nil ebdb-load seq-filter make-byte-code 257 "\301\203 \302\300\"\207\303\300\"\207" vconcat vector [object-of-class-p same-class-p] 4 "\n\n(fn R)" ebdb-search append ebdb-field-name ebdb-field-mail ebdb-field-tags "\211\300D\207" [] 3 "\n\n(fn F)" metadata (metadata (category . ebdb-contact)) complete-with-action] 17 (#$ . 201411)]) #@147 Check if KEY is a value key to return RECORDS. For use as the third argument to `completing-read'. Obey `ebdb-completion-list'. (fn KEY RECORDS) (defalias 'ebdb-completion-predicate #[514 "\204\301\207\302=\203\302\207\3032)\211\211\203&\211@\304#\210A\266\202\202\210\3010\207" [ebdb-completion-list nil t ebdb-hash-ok ebdb-hash-p] 8 (#$ . 202482)]) #@350 Extract a usable Signal number from RECORD. If any of RECORD's phone numbers have "signal" label, use that. Alternately, if there is only one phone labeled "cell" or "mobile", use that. Alternately, if NO-PROMPT is nil, prompt for a number. The number is returned as a properly-formatted string, with leading "+". (fn RECORD &optional NO-PROMPT) (defalias 'ebdb-signal-get-number #[513 "\300\301\"\302\303\304#\206\305\306\"\242\211\2051\211\307\310\300\311\"\"\300\312\"\205*\313\300\312\"!\300\314\"Q\262\211\206=?\205=\315\316!\207" [slot-value phone object-assoc "signal" label seq-filter #[257 "\300\301\"\302\235\207" [slot-value label ("cell" "mobile")] 4 "\n\n(fn P)"] format "+%d" country-code area-code number-to-string number ebdb-read-string "Use phone number"] 10 (#$ . 202855)]) (cl-generic-define-method 'ebdb-field-phone-signal-text nil '((_record ebdb-record-entity) (phone-field ebdb-field-phone)) nil #[514 "\203\302\303\304\"\305\"\206\306\307!\310\311\312\313\"\"\312\314\"\205&\315\312\314\"!\312\316\"Q\262C\306\317!\320\3212P\3221I\323\324\325\320\211\211$!B\262\202:\210\326\321\237\"0\262 \203_\327$\202b\330\331!\207" [ebdb-record-self ebdb-signal-program ebdb-signal-get-number ebdb-gethash uuid t ebdb-read-string "Number to send from (or set `ebdb-record-self'): " format "+%d" slot-value country-code area-code number-to-string number "Message contents" nil --ebdb-loop-exit-- (quit ebdb-empty) expand-file-name read-file-name "Attach file (C-g when done): " throw ebdb--signal-text message "Please set `ebdb-signal-program'"] 12 "Use the Signal protocol to compose a text message.\nPHONE-FIELD will be the number used as the recipient.\n\nThis is a field action version of `ebdb-signal-text', see that\ncommand's docstring for more details.\n\n(fn RECORD PHONE-FIELD)"]) #@212 Internal function for actually sending the SMS. Arguments SENDER, MESSAGE, RECIPIENTS and optional ATTACHMENTS are passed directly to the Signal executable. (fn SENDER MESSAGE RECIPIENTS &optional ATTACHMENTS) (defalias 'ebdb--signal-text #[1027 "\301\302#\205\303\304\305\306#\306Q\304\305\306#R\307\310\311#\207" [ebdb-signal-program format " -u %s -m %s" " -a " mapconcat identity " " shell-command nil " *EBDB Signal Errors*"] 11 (#$ . 204710)]) #@164 Remove leading and trailing whitespace and all properties from STRING. If STRING is nil return an empty string unless NULL is non-nil. (fn STRING &optional NULL) (defalias 'ebdb-string-trim #[513 "\204 \211?\205\\\300\207\301\302\211\303\304\206\305\306Q\"\203*\307\300\310\211$\266\202\202-\266\202\303\311\2065\305\312Q\"\203G\307\300\310\211$\266\205\202J\266\205!\262\211\205W\211\300\230\262?\205\\\207" ["" substring-no-properties nil string-match "\\(?:" "[ \n ]+" "\\)\\'" replace-match t "\\`\\(?:" "\\)"] 13 (#$ . 205180)]) #@77 Return t if strings STR1 and STR2 are equal, ignoring case. (fn STR1 STR2) (defalias 'ebdb-string= #[514 ";\205\211;\205\300\301\302\301\302\303&\303=\207" [compare-strings 0 nil t] 10 (#$ . 205750)]) (put 'ebdb-string= 'byte-optimizer 'byte-compile-inline-expand) #@384 Split STRING into list of substrings bounded by matches for SEPARATORS. SEPARATOR may be a regexp. SEPARATOR may also be a symbol (a field name). Then look up the value in `ebdb-separator-alist' or use `ebdb-default-separator'. Whitespace around SEPARATOR is ignored unless SEPARATOR matches the string " \t\n". Almost the inverse function of `ebdb-concat'. (fn SEPARATOR STRING) (defalias 'ebdb-split #[514 "9\203\236A\206 @\262\302\303\"\204\304\304Q\262\305\306!\307#\207" [ebdb-separator-alist ebdb-default-separator string-match " \n" "[ \n]*" split-string ebdb-string-trim t] 6 (#$ . 206031)]) #@366 Concatenate STRINGS to a string sticking in SEPARATOR. STRINGS may be strings or lists of strings. Empty strings are ignored. SEPARATOR may be a string. SEPARATOR may also be a symbol (a field name). Then look up the value of SEPARATOR in `ebdb-separator-alist' or use `ebdb-default-separator'. The inverse function of `ebdb-split'. (fn SEPARATOR &rest STRINGS) (defalias 'ebdb-concat #[385 "9\203\236A\206 A@\262\302\303\304\305\306\307\310\311\"\"\"#\207" [ebdb-separator-alist ebdb-default-separator mapconcat identity delete "" apply append mapcar #[257 "\211;\203\211C\207\207" [] 2 "\n\n(fn X)"]] 11 (#$ . 206658)]) #@75 Remove all elements from LIST which are not non-empty strings. (fn LIST) (defalias 'ebdb-list-strings #[257 "\300\211\203\211@\211;\203\211\301\230\204\211B\262A\266\202\202\210\211\237\207" [nil ""] 6 (#$ . 207302)]) #@336 Read a string, trimming whitespace and text properties. PROMPT is a string to prompt with, and should not include a final ": ". INIT appears as initial input which is useful for editing existing records. COLLECTION and REQUIRE-MATCH have the same meaning as in `completing-read'. (fn PROMPT &optional INIT COLLECTION REQUIRE-MATCH) (defalias 'ebdb-read-string #[1025 ";\203\f\211\262\202>:\203=@A\211\304=\203&\211\305Q\262\2028\211\306=\2037\305Q\262\2028\266\202\202>\307P\262\310\203\201 \311\312C\211\313\314\315\316\317\"\320\"\321$\240\210\313\314\322\316\317!\323\"\321$\216\324\325\242\"\210\326\312\n%)\266\202)\202\242\327\"\211\330\312\331\332#)\266\204\203\237\333\334C\"\202\240\211\262!\207" [ebdb-read-string-override ebdb-completion-ignore-case completion-ignore-case inhibit-changing-match-data append " " prepend ": " ebdb-string-trim #[0 "\300\301 \302\303 \"\210\304\305\306#\210\304\307\306#\210\211\262!\207" [use-local-map make-sparse-keymap set-keymap-parent current-local-map define-key " " nil "?"] 6] nil make-byte-code 0 "\302\303\301\242\"\210\300 \207" vconcat vector [remove-hook minibuffer-setup-hook] 3 "\301\302\300\242\"\207" [remove-hook minibuffer-setup-hook] add-hook minibuffer-setup-hook completing-read read-string "\\`[ \n ]*\\'" t string-match signal ebdb-empty] 15 (#$ . 207540)]) #@290 Internal function: Evaluate SPEC for RECORD and STRING. If SPEC is a function call it with args RECORD and STRING. Return value. If SPEC is a regexp, return 'query unless SPEC matches STRING. Otherwise return SPEC. Used with variable `ebdb-add-name' and friends. (fn SPEC RECORD STRING) (defalias 'ebdb-add-job #[771 "\300!\203 \"\207;\203\301\"?\205\302\207\207" [functionp string-match query] 6 (#$ . 208935)]) (put 'ebdb-add-job 'byte-optimizer 'byte-compile-inline-expand) #@233 Internal function: Evaluate SPEC using PROMPT. Return t if either SPEC equals t, or SPEC equals 'query and `ebdb-silent' is non-nil or `y-or-no-p' returns t using PROMPT. Used with return values of `ebdb-add-job'. (fn SPEC PROMPT) (defalias 'ebdb-eval-spec #[514 "\301=\206\302=\205\206\303!\207" [ebdb-silent t query y-or-n-p] 4 (#$ . 209434)]) (put 'ebdb-eval-spec 'byte-optimizer 'byte-compile-inline-expand) #@273 Clean mail address COMPONENTS. COMPONENTS is a list (FULL-NAME CANONICAL-ADDRESS) as returned by `mail-extract-address-components'. Pass FULL-NAME through `ebdb-message-clean-name-function' and CANONICAL-ADDRESS through `ebdb-canonicalize-mail-function'. (fn COMPONENTS) (defalias 'ebdb-clean-address-components #[257 "\211@\205\203@!\202\211@A@\205) \203$ A@!\202)\302A@!D\207" [ebdb-message-clean-name-function ebdb-canonicalize-mail-function ebdb-string-trim] 4 (#$ . 209864)]) #@392 Given an RFC-822 address ADDRESS, extract full name and canonical address. This function behaves like `mail-extract-address-components', but it passes its return value through `ebdb-clean-address-components'. See also `ebdb-decompose-ebdb-address'. If optional argument ALL is non-nil, pass it to `mail-extract-address-components' to extract multiple addresses. (fn ADDRESS &optional ALL) (defalias 'ebdb-extract-address-components #[513 "\211\203\f\300\301\302\303\"\"\207\301\302!!\207" [mapcar ebdb-clean-address-components mail-extract-address-components t] 7 (#$ . 210368)]) #@629 Given an RFC-822 address MAIL, extract full name and canonical address. In general, this function behaves like the more sophisticated function `mail-extract-address-components'. Yet for an address `' lacking a real name the latter function returns the name "Joe Smith". This is useful when analyzing the headers of email messages we receive from the outside world. Yet when analyzing the mail addresses stored in EBDB, this pollutes the mail-aka space. So we define here an intentionally much simpler function for decomposing the names and canonical addresses in the mail field of EBDB records. (fn MAIL) (defalias 'ebdb-decompose-ebdb-address #[257 "\300\211\301\302\303#\262\304\305\"\203\306\307\"\262\202&\304\310\"\203&\306\311\"\262\211\203P\304\312\313!\314Q\"\203P\311\211\224O\211\262\203P\304\315\"\203P\307\311\225SO\262\204a\304\316\"\203a\306\307\"\262\211\204i\202w\303\232\206r\232?\205wD\207" [nil replace-regexp-in-string "mailto:" "" string-match "<\\([^@ <>]+[!@][^@ <>]+\\)>" match-string 1 "\\b[^@\" <>]+[!@][^@\" <>]+\\b" 0 "[ ]*?\\'" "^\".*\"$" "(\\([^)]+\\))"] 7 (#$ . 210960)]) #@222 Canonicalize ADDRESS. This is an example of `ebdb-canonicalize-mail-function'. It's probably too specific to be useful for the general user, but can be taken as a source of inspiration for what's possible. (fn ADDRESS) (defalias 'ebdb-canonicalize-mail-1 #[257 "\301!\262\302\303\304Q\"\203\305\306\"\305\307\"P\207\302\310\"\203+\305\306\"\311\305\307\"Q\207\302\312\"\203=\305\306\"\311\305\307\"Q\207\302\313\"\203I\305\307\"\207\302\314\"\203[\305\307\"\311\305\306\"Q\207\302\315\"\203m\305\306\"\311\305\307\"Q\207\302\316\"\203y\305\306\"\207\302\317\"\203\211\211\320\211\224TO\321P\207\207" [ebdb-canonical-hosts ebdb-string-trim string-match "\\`\\([^@%!]+@\\).*\\.\\(" "\\)\\'" match-string 1 2 "\\`\\([^@%!]+\\)%[^@%!.]+@\\(lucid\\.com\\)\\'" "@" "\\`\\([^@%]+\\)%\\([^@%!]+\\)\\(@lucid\\.com\\)?\\'" "\\`\\([^@%!]+\\)!\\([^@%!]+[@%]\\1\\)\\'" "\\`\\([^@%!.]+\\.[^@%!]+\\)!\\([^@%]+\\)\\'" "\\`\\([^@!]+\\)%\\([^@%!]+\\)@hplb\\.hpl\\.hp\\.com\\'" "\\`\\([^@%!]+\\)[@%][^@%!.]+\\'" ".%uunet\\.uu\\.net@[^@%!]+\\'" 0 "@UUNET.UU.NET"] 6 (#$ . 212156)]) #@121 Default function for `ebdb-message-clean-name-function'. This strips garbage from the user full NAME string. (fn NAME) (defalias 'ebdb-message-clean-name-default #[257 "\301\302\"\203\211\303\225\304O\262\301\305\"\203\306\307\"\262\310\311\312#\262\310\313\314#\262\301\315\"\2037\211\303\307\224O\262\316\310\317\320#\262)\301\321\"\203O\211\303\211\224O\262\322!\207" [case-fold-search string-match "\\`[^[:alnum:]]+" 0 nil "^\\([^@]+\\)@" match-string 1 replace-regexp-in-string "\\.\\([^ ]\\)" " \\1" "[ \n_]+" " " "[^ ]\\([ ]*\\((\\| [-#]\\)\\)" t "\\W+\\(x\\|ext\\.?\\)\\W*[-0-9]+" "" "[^[:alnum:]]+\\'" substring-no-properties] 5 (#$ . 213259)]) #@130 Associate RECORD with KEY in `ebdb-hashtable'. KEY must be a string or nil. Empty strings and nil are ignored. (fn KEY RECORD) (defalias 'ebdb-puthash #[514 "\2057\211\301\230\262?\2057\227\302\"\303\2031\304\"\203&\202,\211B\211\262\262\2023C#\266\202\207" [ebdb-hashtable "" gethash puthash memql] 10 (#$ . 213947)]) #@320 Return records associated with KEY in `ebdb-hashtable'. KEY must be a string or nil. Empty strings and nil are ignored. PREDICATE may take the same values as `ebdb-completion-list'. If predicate is the single symbol uuid, this function returns a single record, otherwise returns a list. (fn KEY &optional PREDICATE) (defalias 'ebdb-gethash #[513 "\205U\211\301\230\262?\205U\227\302\"\303\203\304=\203#\202S\305\306\"\203/@\202S\211\203P\211@\3072A\310#0\203I\211B\262A\266\202\2020\262\266\203\207" [ebdb-hashtable "" gethash nil t eql uuid ebdb-hash-ok ebdb-hash-p] 11 (#$ . 214298)]) #@180 Throw `ebdb-hash-ok' non-nil if KEY matches RECORD acording to PREDICATE. PREDICATE may take the same values as the elements of `ebdb-completion-list'. (fn KEY RECORD PREDICATE) (defalias 'ebdb-hash-p #[771 "\302\303\"\203D\304\305\"\306!>\204\307\310\311D\"\210\211\312H\262\206$\313;\205:\211;\205:\314\315\316\315\316\317&\317=\266\202\203D\320\321\322\"\210\302\323\"\203^\324\325\326\327\330\331!\332\"\333\334%\335!\"\210\336>\203\214\324\325\326\337\330\331!\340\"\333\341%\304\305\"\306!>\204\205\307\310\311D\"\210\211\342H\262\"\210\302\343\"\203\315\304\305\"\306!>\204\247\307\310\311D\"\210\211\344H\262@;\205\303\211;\205\303\314\315\316\315\316\317&\317=\266\202\203\315\320\321\345\"\210\302\346\"\203\374\324\325\326\327\330\331!\347\"\333\350%\304\305\"\306!>\204\365\307\310\311D\"\210\211\344H\262\"\210 \211\203\211@\211@>\203\211A\"\203\320\321@\"\210A\266\202\202\375\210\316\207" [cl-struct-ebdb-record-cache-tags ebdb-hash-extra-predicates seq-intersection (name ebdb-field-name) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1 "" compare-strings 0 nil t throw ebdb-hash-ok name (organization ebdb-field-role) mapc make-byte-code 257 "\300;\205\211;\205\301\302\303\302\303\304&\304=\266\202\205!\305\306\307\"\207" vconcat vector [compare-strings 0 nil t throw ebdb-hash-ok organization] 11 "\n\n(fn ORGANIZATION)" ebdb-record-organization alt-names "\300\301!;\205\211;\205\302\303\304\303\304\305&\305=\266\202\205#\306\307\310\"\207" [ebdb-string compare-strings 0 nil t throw ebdb-hash-ok alt-names] "\n\n(fn NAME)" 2 (primary mail-primary) 5 primary (mail ebdb-field-mail) [compare-strings 0 nil t throw ebdb-hash-ok mail] "\n\n(fn MAIL)"] 13 (#$ . 214928)]) #@139 Remove RECORD from list of records associated with KEY. KEY must be a string or nil. Empty strings and nil are ignored. (fn KEY RECORD) (defalias 'ebdb-remhash #[514 "\2050\211\301\230\262?\2050\227\302\"\211\205.\303\"\262\211\203*\304#\202.\305\"\266\202\207" [ebdb-hashtable "" gethash delq puthash remhash] 8 (#$ . 216741)]) #@109 Update hash for RECORD. Remove OLD, insert NEW. Both OLD and NEW are lists of values. (fn RECORD OLD NEW) (defalias 'ebdb-hash-update #[771 "\211\203\211@\300\"\210A\266\202\202\210\211\211\205)\211@\301\"\210A\266\202\202\207" [ebdb-remhash ebdb-puthash] 8 (#$ . 217098)]) #@278 Check whether the name FIRST LAST is a valid name. This throws an error if the name is already used by another record and `ebdb-allow-duplicates' is nil. If RECORD is non-nil, FIRST and LAST may correspond to RECORD without raising an error. (fn FIRST LAST &optional RECORD) (defalias 'ebdb-check-name #[770 "?\205#\301\302#\303\304\"\204\211\204\305\"\205!\306\307\"\266\202\207" [ebdb-allow-duplicates ebdb-concat name-first-last ebdb-gethash (name alt-names) remq error "%s is already in EBDB"] 8 (#$ . 217397)]) (byte-code "\300\301\302\303\302\304%\210\300\301\302\305\302\306%\210\307\310\311\310\312\302#\313#\210\300\310\302\314\302\315%\210\300\310\302\316\302\317%\210\300\310\302\320\302\321%\207" [cl-generic-define-method ebdb-record-set-sortkey nil ((record ebdb-record-person)) #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\211\307\310\301\311\"!\227I\262\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 6 ebdb-name-lf name] 9 "Record cache function: Set and return RECORD's sortkey.\n\n(fn RECORD)"] ((record ebdb-record-organization)) #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\211\307\310\301\311\"!\227I\262\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 6 ebdb-string name] 9 "\n\n(fn RECORD)"] defalias ebdb-record-field cl-generic-define (record field) "For RECORD return the value of FIELD.\nFIELD may be a slot-name symbol, in which case the value of that\nslot, if any, is returned. It can be a string, in which case it\nis interpreted as a label for one of RECORD's user fields. It\ncan also be the symbol name of a user-field class, in which case\nall the record's instances of that class are returned. It can\nalso be one of the special symbols below.\n\n firstname Return the first name of RECORD\n lastname Return the last name of RECORD\n name-lf Return the full name of RECORD (last name first)\n affix Return the list of affixes\n aka-all Return the list of AKAs plus mail-akas.\n mail-aka Return the list of name parts in mail addresses\n mail-primary Return the record's primary mail address\n mail-canon Return the list of canonical mail addresses.\n\n(fn RECORD FIELD)" ((record ebdb-record) (field symbol)) #[514 "\211\301=\203\n\302!\207\211\303=\203\304!\207\211\305=\203\"\306\211\307\"\305\"\207\211\310=\203?\306\311\"\312!>\204;\313\314\315D\"\210\211\316H\207\211\317=\203L\320\321\211\322$\207\211\323=\203X\324\321\322#\207\211\325=\203u\306\311\"\312!>\204q\313\314\315D\"\210\211\326H\207\211\327=\203\231\330\331!\306\311\"\312!>\204\222\313\314\315D\"\210\211\326H\262\"\207\332\"\205\253\333\"\205\253\306\"\207" [cl-struct-ebdb-record-cache-tags firstname ebdb-record-firstname lastname ebdb-record-lastname affix slot-value name mail-canon cache type-of signal wrong-type-argument ebdb-record-cache 5 mail ebdb-record-mail nil t mail-primary ebdb-record-one-mail mail-aka 4 aka-all append ebdb-record-aka slot-exists-p slot-boundp] 9 "\n\n(fn RECORD FIELD)"] ((record ebdb-record) (f-class (subclass ebdb-field-user))) #[514 "\300\301\302\303\304\305!\306\"\307\310%\311!\"\207" [seq-filter make-byte-code 257 "\301\300\"\207" vconcat vector [object-of-class-p] 4 "\n\n(fn F)" ebdb-record-user-fields] 9 "Return all RECORD's fields that are of class F-CLASS.\n\n(fn RECORD F-CLASS)"] ((record ebdb-record) (label string)) #[514 "\300\"\207" [ebdb-record-user-field] 5 "Return all RECORD's fields that have label LABEL.\n\n(fn RECORD LABEL)"]] 6) #@407 Divide STRING into its component parts. Return name as a list of (SURNAME GIVEN-NAMES SUFFIX). SURNAME is always a string (possibly empty). GIVEN-NAMES, if present, is a list of first names. GIVEN-NAMES and SUFFIX may be nil. During parsing `case-fold-search' is non-nil, with the exception that a string of all-upper-case letters will be assumed (a la UN usage) to represent the surname. (fn STRING) (defalias 'ebdb-divide-name #[257 "\303\304\211\305 \"\203\306\307\"\262\310\211\224O\262\304\305\311\")\203=\310\307\224O\312\307\225\304OQ\262\313\306\307\"!\262\202t\305\314\n\315Q\"\203V\306\316\"\262\306\307\"\262\202t\305\n\317P\"\203t\310\224\310U?\205l\310\211\224O\262\306\307\"\262\320\304\321!\205\203\322\304\303#E\")\207" [case-fold-search ebdb-lastname-suffix-re ebdb-lastname-re t nil string-match match-string 1 0 "[ \n]*\\([[:upper:]]+[[:upper:]-']+\\)\\>[ \n]*" " " capitalize "\\`" ",[ \n]*\\(.+\\)\\'" 2 "[ ,]*\\'" delq ebdb-string-trim split-string] 11 (#$ . 221060)]) #@24 (fn RECORD1 RECORD2) (defalias 'ebdb-record-lessp #[514 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\262\301\302\"\303!>\204+\304\305\306D\"\210\211\307H\262\231\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 6] 8 (#$ . 222104)]) (put 'ebdb-record-lessp 'byte-optimizer 'byte-compile-inline-expand) #@107 Load all databases listed in `ebdb-sources'. All the important work is done by the `ebdb-db-load' method. (defalias 'ebdb-load #[0 "<\203 \202 C \306 \203\307\310\311 #\203\312\313!\210\314\315!\210\316 \210\317\320!\210\211\203\332\211@\211;\203\216\321!\203u\322!\321!\203i\323\324\325\"!\203i\326\327\310#\262\330\331#\266\330\311\310#\266\202p\326\327\310#\262\266\202\240\323\324\332\"!\203\240\333\334\335\336\310%\262\337!\210\202\240\340!\203\233\341\327\"\204\240\312\342\"\210\343\344\"\204\256\345!\210\202\301\314\346\347!\"\210\350\351\343\352\"\"\210\353\354!\210\211\355 \"\203\316 \210\202\322\211 B\210A\266\202\202+\210\314\356!\210\357\360!\203\360\360\361!\362!\266\202\363\363 \210\314\364!\210 \237\365\366\367 \"!\262\211\370B\fB\357\371!\203\211\371B B\317\372!\210@\203\"\373\374\375\"\210\373\376\377\"\210AG)\207" [ebdb-sources ebdb-try-speedups eieio-skip-typecheck ebdb-db-list auto-coding-alist auto-mode-alist nil object-assoc t dirty error "Databases have unsaved data, save first" message "Loading EBDB sources..." ebdb-clear-vars run-hooks ebdb-before-load-hook file-exists-p ebdb-db-make-auto-save-file-name yes-or-no-p format "Recover auto-save file for %s? " eieio-persistent-read ebdb-db eieio-oset file "%s does not exist, create? " make-instance ebdb-db-file :file :dirty ebdb-db-save eieio-object-p object-of-class-p "Source %s must be a filename or instance of `ebdb-db'" slot-value disabled ebdb-db-load "%s is currently disabled." ebdb-string mapc delete-instance records sit-for 2 memql "Initializing EBDB records..." fboundp make-thread ebdb-initialize-threadwise thread-join ebdb-initialize "Initializing EBDB records... done" regexp-opt mapcar #[257 "\300\301\302\"!\207" [expand-file-name slot-value file] 5 "\n\n(fn DB)"] utf-8-emacs lisp-data-mode ebdb-after-load-hook add-hook diary-list-entries-hook ebdb-diary-add-entries kill-emacs-hook ebdb-save-on-emacs-exit ebdb-use-diary ebdb-record-tracker] 12 (#$ . 222492)]) #@274 After all databases are loaded, initialize the records. This results in the creation of all the secondary data structures: label lists, `ebdb-org-hashtable', record caches, etc. If optional argument RECORDS is given, only initialize those records. (fn &optional RECORDS) (defalias 'ebdb-initialize #[256 "\301\302\206\"\207" [ebdb-record-tracker mapc ebdb-init-record] 4 (#$ . 224543)]) #@491 Exactly the same as `ebdb-initialize', but yields thread. If Emacs has threading, then `ebdb-load' will call this function in its own thread, and the thread will be yielded after every ten record initializations. Note that by itself this will have no impact whatsoever on EBDB load times. It's up to the user to interleave it with other thread-yielding operations to create an actual speedup. If optional argument RECORDS is given, only initialize those records. (fn &optional RECORDS) (defalias 'ebdb-initialize-threadwise #[256 "\301C\302\303\304\305\306\307!\310\"\311\312%\206\"\207" [ebdb-record-tracker 0 mapc make-byte-code 257 "\301!\210\302\300\211\242T\240\303\"\304U\205\305 \207" vconcat vector [ebdb-init-record mod 10 0 thread-yield] 4 "\n\n(fn R)"] 9 (#$ . 224943)]) #@288 Insert a string representation of RECORDS at point. If ARG (the prefix arg) is given, strings are in "list style", ie separated by newlines. Otherwise they are "inline style". If KILL is non-nil, put the string on the kill ring instead of inserting it. (fn &optional RECORDS ARG KILL) (defalias 'ebdb-cite-records #[768 "<\203 \202 C\203\300\202\301\302\211\211\211\203?\211@\303!\211\262\2038\211\304\305\306#\2063@BB\262A\266\202\202\210\307\"\262\203T\310!\210\311\312!\202Vc\207" [list inline nil ebdb-record-mail object-assoc primary priority ebdb-records-cite kill-new message "Citation added to kill ring"] 15 (#$ . 225745) (byte-code "\301 D\207" [current-prefix-arg ebdb-prompt-for-record] 2)]) (byte-code "\300\301\302\301\303\304#\305#\210\306\301\304\307\304\310%\210\306\301\304\311\304\312%\210\306\301\304\313\304\314%\210\306\301\304\315\304\316%\210\306\301\304\317\304\320%\210\306\301\304\321\304\322%\207" [defalias ebdb-records-cite cl-generic-define (style records) nil "Return mode-appropriate mail strings for RECORDS.\nSTYLE is a symbol, one of 'inline or 'list. This is interpreted\ndifferently by different major modes; the default looks like\n\"Firstname Lastname \".\n\nThis is a generic function that dispatches on the value of\n`major-mode'. It only inserts names and mail addresses.\n\n(fn STYLE RECORDS)" cl-generic-define-method ((_style (eql list)) (records list)) #[514 "\300\301\302#\207" [mapconcat #[257 "\300\301\302@!\302A!#\207" [format "%s <%s>" ebdb-string] 6 "\n\n(fn PAIR)"] "\n"] 6 "\n\n(fn STYLE RECORDS)"] ((_style (eql inline)) (records list)) #[514 "\300\301\302#\207" [mapconcat #[257 "\300\301\302@!\302A!#\207" [format "%s <%s>" ebdb-string] 6 "\n\n(fn PAIR)"] ", "] 6 "\n\n(fn STYLE RECORDS)"] ((_style (eql list)) (records list) &context (major-mode org-mode)) #[514 "\300\301\302#\207" [mapconcat #[257 "\300\301\302A\303\"\304@!#\207" [format "- [[mailto:%s][%s]]" slot-value mail ebdb-string] 6 "\n\n(fn PAIR)"] "\n"] 6 "\n\n(fn STYLE RECORDS)"] ((_style (eql inline)) (records list) &context (major-mode org-mode)) #[514 "\300\301\302#\207" [mapconcat #[257 "\300\301\302A\303\"\304@!#\207" [format "[[mailto:%s][%s]]" slot-value mail ebdb-string] 6 "\n\n(fn PAIR)"] ", "] 6 "\n\n(fn STYLE RECORDS)"] ((_style (eql list)) (records list) &context (major-mode html-mode)) #[514 "\300\301\302#\207" [mapconcat #[257 "\300\301\302A\303\"\304@!#\207" [format "
  • %s
  • " slot-value mail ebdb-string] 6 "\n\n(fn PAIR)"] "\n"] 6 "\n\n(fn STYLE RECORDS)"] ((_style (eql inline)) (records list) &context (major-mode html-mode)) #[514 "\300\301\302#\207" [mapconcat #[257 "\300\301\302A\303\"\304@!#\207" [format "%s" slot-value mail ebdb-string] 6 "\n\n(fn PAIR)"] ", "] 6 "\n\n(fn STYLE RECORDS)"]] 6) #@174 Save the EBDB if it is modified. If INTERACTIVE is non-nil, report progess. If it is 4, additionally prompt to save each database individually. (fn &optional INTERACTIVE) (defalias 'ebdb-save #[256 "\211\203\301\302!\210\303\304!\210\211\203!\211@\305\306=\"\210A\266\202\202 \210\303\307!\210\211\205-\301\310!\207" [ebdb-db-list message "Saving the EBDB..." run-hooks ebdb-before-save-hook ebdb-db-save 4 ebdb-after-save-hook "Saving the EBDB... done"] 7 (#$ . 228630)]) #@72 Possibly save EBDB when exiting Emacs. See option `ebdb-save-on-exit'. (defalias 'ebdb-save-on-emacs-exit #[0 "\205\301 \207" [ebdb-save-on-exit ebdb-save] 1 (#$ . 229120)]) #@50 Bind to t to invert the result of `ebdb-search'. (defvar ebdb-search-invert nil (#$ . 229303)) #@383 Parse STR as a search on multiple fields. STR should contain some number of : pairs, where key is the name of a field class, or a field class shortcut such as "name" or "mail", and the value is an arbitrary string value to search on. Values containing spaces should be enclosed in double quotes. Returns a list of (field value) pairs suitable for searching. (fn STR) (defalias 'ebdb-parse-search-string #[257 "\301\302\303!r\211q\210\304\305\306\307\310!\311\"\312$\216c\210eb\210\313\314!\210\315\316d\317#\203j\320\321!\322\301\317\323#)\266\203\203?\324!\206E\324\325\326\"!\327!\203^\330\331\"\203^\211\320\312!DB\262\202e\332\333\334D\"\210\266\202*\210\211\207" [inhibit-changing-match-data nil generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 skip-syntax-forward " " re-search-forward "\\([[:ascii:]-]+\\):\\(?:\"\\(?2:[^\"]+\\)\"\\|\\(?2:[^[:space:]]+\\)\\)" t match-string 1 "ebdb-field-" string-match intern-soft format "ebdb-field-%s" class-p child-of-class-p ebdb-field signal ebdb-unparseable "Invalid search key"] 11 (#$ . 229405)]) #@200 Char-table holding regexps used in char fold searches. Keys are characters in the upper- and lower-case ascii ranges. Values are a regexp matching all characters that decompose to the key character. (defconst ebdb-char-fold-table #^[nil nil char-fold-table #1= #^^[3 0 nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil "[AÀ-ÅĀĂĄǍȀȂȦᴬḀẠẢⒶ㍳㏟A𝐀𝐴𝑨𝒜𝓐𝔄𝔸𝕬𝖠𝗔𝘈𝘼𝙰🄰]" "[BᴮḂḄḆℬⒷ㏃B𝐁𝐵𝑩𝓑𝔅𝔹𝕭𝖡𝗕𝘉𝘽𝙱🄱]" "[CÇĆĈĊČℂℭⅭⒸ㏆㏇C𝐂𝐶𝑪𝒞𝓒𝕮𝖢𝗖𝘊𝘾𝙲🄫🄭🄲]" "[DĎDŽDžDZDzᴰḊḌḎḐḒⅅⅮⒹD𝐃𝐷𝑫𝒟𝓓𝔇𝔻𝕯𝖣𝗗𝘋𝘿𝙳🄳🆐]" "[EÈ-ËĒĔĖĘĚȄȆȨᴱḘḚẸẺẼℰⒺE𝐄𝐸𝑬𝓔𝔈𝔼𝕰𝖤𝗘𝘌𝙀𝙴🄴]" "[FḞℱ℻ⒻF𝐅𝐹𝑭𝓕𝔉𝔽𝕱𝖥𝗙𝘍𝙁𝙵🄵]" "[GĜĞĠĢǦǴᴳḠⒼ㎇㎓㎬㏉G𝐆𝐺𝑮𝒢𝓖𝔊𝔾𝕲𝖦𝗚𝘎𝙂𝙶🄶]" "[HĤȞᴴḢḤḦḨḪℋℌℍⒽ㋌㎐㏋H𝐇𝐻𝑯𝓗𝕳𝖧𝗛𝘏𝙃𝙷🄷🅊]" "[IÌ-ÏĨĪĬĮİIJǏȈȊᴵḬỈỊℐℑⅠ-ⅣⅨⒾ㍺I𝐈𝐼𝑰𝓘𝕀𝕴𝖨𝗜𝘐𝙄𝙸🄸]" "[JĴᴶⒿJ𝐉𝐽𝑱𝒥𝓙𝔍𝕁𝕵𝖩𝗝𝘑𝙅𝙹🄹]" "[KĶǨᴷḰḲḴKⓀ㎅㏍㏎K𝐊𝐾𝑲𝒦𝓚𝔎𝕂𝕶𝖪𝗞𝘒𝙆𝙺🄺]" "[LĹĻĽĿLJLjᴸḶḺḼℒⅬⓁ㋏L𝐋𝐿𝑳𝓛𝔏𝕃𝕷𝖫𝗟𝘓𝙇𝙻🄻]" "[MᴹḾṀṂℳⅯⓂ㎆㎒㎫㎹㎿㏁M𝐌𝑀𝑴𝓜𝔐𝕄𝕸𝖬𝗠𝘔𝙈𝙼🄼🅋🅪🅫]" "[NÑŃŅŇNJNjǸᴺṄṆṈṊℕ№ⓃN𝐍𝑁𝑵𝒩𝓝𝔑𝕹𝖭𝗡𝘕𝙉𝙽🄽]" "[OÒ-ÖŌŎŐƠǑǪȌȎȮᴼỌỎⓄO𝐎𝑂𝑶𝒪𝓞𝔒𝕆𝕺𝖮𝗢𝘖𝙊𝙾🄾]" "[PᴾṔṖℙⓅ㉐㎩㏗㏙㏚P𝐏𝑃𝑷𝒫𝓟𝔓𝕻𝖯𝗣𝘗𝙋𝙿🄿🅎]" "[QℚⓆQ𝐐𝑄𝑸𝒬𝓠𝔔𝕼𝖰𝗤𝘘𝙌𝚀🅀]" "[RŔŖŘȐȒᴿṘṚṞ₨ℛℜℝⓇR𝐑𝑅𝑹𝓡𝕽𝖱𝗥𝘙𝙍𝚁🄬🅁]" "[SŚŜŞŠȘṠṢ℠Ⓢ㏜S𝐒𝑆𝑺𝒮𝓢𝔖𝕊𝕾𝖲𝗦𝘚𝙎𝚂🅂🅌🅍]" "[TŢŤȚᵀṪṬṮṰ℡™Ⓣ㎔T𝐓𝑇𝑻𝒯𝓣𝔗𝕋𝕿𝖳𝗧𝘛𝙏𝚃🅃]" "[UÙ-ÜŨŪŬŮŰŲƯǓȔȖᵁṲṴṶỤỦⓊU𝐔𝑈𝑼𝒰𝓤𝔘𝕌𝖀𝖴𝗨𝘜𝙐𝚄🅄]" "[VṼṾⅤ-ⅧⓋⱽ㏞V𝐕𝑉𝑽𝒱𝓥𝔙𝕍𝖁𝖵𝗩𝘝𝙑𝚅🅅]" "[WŴᵂẀẂẄẆẈⓌ㏝W𝐖𝑊𝑾𝒲𝓦𝔚𝕎𝖂𝖶𝗪𝘞𝙒𝚆🄮🅆🅏]" "[XẊẌⅩⅪⅫⓍX𝐗𝑋𝑿𝒳𝓧𝔛𝕏𝖃𝖷𝗫𝘟𝙓𝚇🅇]" "[YÝŶŸȲẎỲỴỶỸⓎY𝐘𝑌𝒀𝒴𝓨𝔜𝕐𝖄𝖸𝗬𝘠𝙔𝚈🅈]" "[ZŹŻŽẐẒẔℤℨⓏZ𝐙𝑍𝒁𝒵𝓩𝖅𝖹𝗭𝘡𝙕𝚉🅉]" nil nil nil nil nil nil "[aªà-åāăąǎȁȃȧᵃḁẚạảₐ℀℁ⓐ㏂a𝐚𝑎𝒂𝒶𝓪𝔞𝕒𝖆𝖺𝗮𝘢𝙖𝚊]" "[bᵇḃḅḇⓑ㍴b𝐛𝑏𝒃𝒷𝓫𝔟𝕓𝖇𝖻𝗯𝘣𝙗𝚋]" "[cçćĉċčᶜ℅℆ⅽⓒ㎈㎝㎠㎤㏄㏅c𝐜𝑐𝒄𝒸𝓬𝔠𝕔𝖈𝖼𝗰𝘤𝙘𝚌]" "[dďdždzᵈḋḍḏḑḓⅆⅾⓓ㍲㍷㍸㍹㎗㏈d𝐝𝑑𝒅𝒹𝓭𝔡𝕕𝖉𝖽𝗱𝘥𝙙𝚍]" "[eè-ëēĕėęěȅȇȩᵉḙḛẹẻẽₑℯⅇⓔ㋍㋎e𝐞𝑒𝒆𝓮𝔢𝕖𝖊𝖾𝗲𝘦𝙚𝚎]" "[fᶠḟⓕ㎙ff-fflf𝐟𝑓𝒇𝒻𝓯𝔣𝕗𝖋𝖿𝗳𝘧𝙛𝚏]" "[gĝğġģǧǵᵍḡℊⓖ㏿g𝐠𝑔𝒈𝓰𝔤𝕘𝖌𝗀𝗴𝘨𝙜𝚐]" "[hĥȟʰḣḥḧḩḫẖₕℎⓗ㍱㏊h𝐡𝒉𝒽𝓱𝔥𝕙𝖍𝗁𝗵𝘩𝙝𝚑]" "[iì-ïĩīĭįijǐȉȋᵢḭỉịⁱℹⅈⅰ-ⅳⅸⓘ㏌i𝐢𝑖𝒊𝒾𝓲𝔦𝕚𝖎𝗂𝗶𝘪𝙞𝚒]" "[jĵǰʲⅉⓙⱼj𝐣𝑗𝒋𝒿𝓳𝔧𝕛𝖏𝗃𝗷𝘫𝙟𝚓]" "[kķǩᵏḱḳḵₖⓚ㎄㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏏k𝐤𝑘𝒌𝓀𝓴𝔨𝕜𝖐𝗄𝗸𝘬𝙠𝚔]" "[lĺļľŀljˡḷḻḽₗℓⅼⓛ㏐-㏓l𝐥𝑙𝒍𝓁𝓵𝔩𝕝𝖑𝗅𝗹𝘭𝙡𝚕]" "[mᵐḿṁṃₘⅿⓜ㎃㎎㎖㎜㎟㎡㎣㎥㎧㎨㎳㎷㎽㏔㏕㏖m𝐦𝑚𝒎𝓂𝓶𝔪𝕞𝖒𝗆𝗺𝘮𝙢𝚖]" "[nñńņňnjǹṅṇṉṋⁿₙⓝ㎁㎋㎚㎱㎵㎻n𝐧𝑛𝒏𝓃𝓷𝔫𝕟𝖓𝗇𝗻𝘯𝙣𝚗]" "[oºò-öōŏőơǒǫȍȏȯᵒọỏₒℴⓞ㍵o𝐨𝑜𝒐𝓸𝔬𝕠𝖔𝗈𝗼𝘰𝙤𝚘]" "[pᵖṕṗₚⓟ㍶㎀㎊㎰㎴㎺㏘p𝐩𝑝𝒑𝓅𝓹𝔭𝕡𝖕𝗉𝗽𝘱𝙥𝚙]" "[qⓠq𝐪𝑞𝒒𝓆𝓺𝔮𝕢𝖖𝗊𝗾𝘲𝙦𝚚]" "[rŕŗřȑȓʳᵣṙṛṟⓡ㎭㎮㎯r𝐫𝑟𝒓𝓇𝓻𝔯𝕣𝖗𝗋𝗿𝘳𝙧𝚛]" "[sśŝşšſșˢṡṣₛⓢ㏛sts𝐬𝑠𝒔𝓈𝓼𝔰𝕤𝖘𝗌𝘀𝘴𝙨𝚜]" "[tţťțᵗṫṭṯṱẗₜⓣt𝐭𝑡𝒕𝓉𝓽𝔱𝕥𝖙𝗍𝘁𝘵𝙩𝚝]" "[uù-üũūŭůűųưǔȕȗᵘᵤṳṵṷụủⓤu𝐮𝑢𝒖𝓊𝓾𝔲𝕦𝖚𝗎𝘂𝘶𝙪𝚞]" "[vᵛᵥṽṿⅴ-ⅷⓥv𝐯𝑣𝒗𝓋𝓿𝔳𝕧𝖛𝗏𝘃𝘷𝙫𝚟]" "[wŵʷẁẃẅẇẉẘⓦw𝐰𝑤𝒘𝓌𝔀𝔴𝕨𝖜𝗐𝘄𝘸𝙬𝚠]" "[xˣẋẍₓⅹⅺⅻⓧx𝐱𝑥𝒙𝓍𝔁𝔵𝕩𝖝𝗑𝘅𝘹𝙭𝚡]" "[yýÿŷȳʸẏẙỳỵỷỹⓨy𝐲𝑦𝒚𝓎𝔂𝔶𝕪𝖞𝗒𝘆𝘺𝙮𝚢]" "[zźżžᶻẑẓẕⓩz𝐳𝑧𝒛𝓏𝔃𝔷𝕫𝖟𝗓𝘇𝘻𝙯𝚣]" nil nil nil nil nil] #^^[1 0 #^^[2 0 #1# nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] (#$ . 230569)) #@141 A highly simplified version of `char-fold-to-regexp'. Only converts characters in STRING that decompose to the range [a-zA-Z]. (fn STRING) (defalias 'ebdb-char-fold-to-regexp #[257 "\301G\301\302\211W\203$H\262H\206\303!B\262\211T\262\202\304\305\237\"\262G\306V\2038\307!\2029\207" [ebdb-char-fold-table nil 0 string apply concat 5000 regexp-quote] 8 (#$ . 236605)]) #@428 Return list of EBDB records matching NAME and/or MAIL. First try to find a record matching both NAME and MAIL. If this fails try to find a record matching MAIL. If this fails try to find a record matching NAME. NAME may match FIRST_LAST, LAST_FIRST or AKA. This function performs a fast search using `ebdb-hashtable'. NAME and MAIL must be strings or nil. See `ebdb-search' for searching records with regexps. (fn NAME MAIL) (defalias 'ebdb-message-search #[514 "\204\211\205Z\204\301 \210\211\205\302\303\"\205\302\304\"\203S\211\203S\305C\211\203K\211@\306\307\310\311\312\313\"\314\"\315\316%\"\210A\266\202\202*\210\211\242\262\206X\206X\211\266\202\207" [ebdb-db-list ebdb-load ebdb-gethash (mail) (name alt-names) nil mapc make-byte-code 257 "\301=\205\301\300\242>?\205\300\301\300\242B\240\207" vconcat vector [] 4 "\n\n(fn MR)"] 15 (#$ . 237004)]) #@770 Search RECORDS for records matching CLAUSES. Each element of CLAUSES is either a two-element list of (symbol criteria), which will be used to make a call to `ebdb-record-search', or it is a callable, which will be called with a record as the argument. All other values will be interpreted as t, ie the record passes. If the car of a clause is one of `ebdb-field-name', `ebdb-field-mail', `ebdb-field-tags', or is present in the assoc list `ebdb-hash-extra-predicates', this function will try to use the `ebdb-hashtable' to do a fast lookup. The criteria must be a string, and must begin with a leading "^", ie, the search string must be a prefix of the sought string. With optional argument INVERT, invert the search results. (fn RECORDS CLAUSES &optional INVERT) (defalias 'ebdb-search #[770 "\306C\306\211C\203\240\210\202\202\211\203\201\211@\211@A\211@A;\203m\307\310\"\203m\311\312\313\314E\"\204B\315\n\"\203m\316\317\306O\227 \"\262\n\320\306\321\322 \242\323\324\325\326\327\330\f!\331\"\332\333%\"B\"\"\240\204x\nD\f\242B\240\210\266A\266\202\202\210\f\203\274\242\211\203\273\211@\211:\203\264\211A@;\203\264\f\211\203\263\211@\211AA@!\240\266A\266\202\202\233\210A\266\202\202\210\210 \203\347\242\211\203\346\211@\211:\203\337\211A@;\203\337\211\211A\334A@!\240\266A\266\202\202\302\210\242\203\211\322\242\335\324\325\336\327\330 \f #\337\"\340\341% \"\"\240\210\342\242!)\207" [ebdb-case-fold-search case-fold-search ebdb-hash-extra-predicates ebdb-hashtable ebdb-search-transform-functions ebdb-char-fold-search nil string-prefix-p "^" ebdb-foo-in-list-p ebdb-field-name ebdb-field-mail ebdb-field-tags assoc all-completions 1 delq apply append mapcar make-byte-code 257 "\301\300C\"\207" vconcat vector [ebdb-gethash] 4 "\n\n(fn C)" ebdb-char-fold-to-regexp seq-filter "\211\302\242\235?\205\211\303\300?\3042\210\3051\205\301\242\211\205\211@\306:\203k@A\211:\203Z\211@A\211\204G\307\f#\203B\310\304\311\"\210\266\202U\312!\203U\n\"\210\266\202f\312!\203f\"\210\266\202w\312!\203w\211\"\210\210A\266\202\202\2620\202\207\210\3130\"\207" [eql found (cl-no-applicable-method) #[514 "\211!\205\n\300\301\302\"\207" [throw found t] 5 "\n\n(fn R FUNC)"] ebdb-record-search throw t functionp nil] 16 "\n\n(fn R)" delete-dups] 28 (#$ . 237906)]) (byte-code "\300\301\302\301\303\304#\305#\210\300\306\302\306\307\304#\310#\210\311\301\304\312\304\313%\210\311\301\304\314\304\315%\210\311\301\304\316\317\320%\210\311\301\304\321\304\322%\210\311\306\304\323\304\324%\210\311\306\304\325\317\326%\210\311\306\304\327\304\330%\210\311\306\304\331\304\332%\210\311\306\304\333\304\334%\210\311\306\304\335\304\336%\210\311\306\304\337\304\340%\210\311\306\304\341\304\342%\210\311\306\304\343\304\344%\210\311\306\304\345\304\346%\210\311\306\304\347\304\350%\210\311\306\304\351\304\352%\210\311\306\304\353\304\354%\210\300\355\302\355\356\304#\357#\210\311\355\304\360\304\361%\210\311\355\304\362\304\363%\210\311\355\304\364\304\365%\210\311\355\304\366\304\367%\210\311\355\370\371\317\372%\210\373\374!\207" [defalias ebdb-field-search cl-generic-define (field criterion) nil "Return t if search CRITERION somehow matches the value of\n FIELD.\n\n(fn FIELD CRITERION)" ebdb-record-search (record type criterion) "Return t if CRITERION matches RECORD, given TYPE.\n\n(fn RECORD TYPE CRITERION)" cl-generic-define-method ((field ebdb-field) (regex string)) #[514 "\3011\211\211\302\230\262\206\211\303!\304\305\306#)\266\2030\207\210\304\207" [inhibit-changing-match-data (cl-no-applicable-method) #1="" ebdb-string nil t string-match] 9 "\n\n(fn FIELD REGEX)"] ((field ebdb-field-labeled) (pair cons)) #[514 "\211@A\203$\211\301\230\262\204$\302\303\"\304\305\306#)\266\203\205-\211?\206-\307\"\207" [inhibit-changing-match-data #1# slot-value label nil t string-match ebdb-field-search] 11 "\n\n(fn FIELD PAIR)"] ((field ebdb-field-labeled) (regexp string)) t #[771 "\211\301!\302\303\304#)\266\203\206/\305\306\";\203-\211\305\306\"\302\303\304#)\266\203\206/ \207" [inhibit-changing-match-data ebdb-string nil t string-match slot-value label] 10 "\n\n(fn CL--CNM FIELD REGEXP)"] ((_field ebdb-field-name-complex) _regex) #[514 "\300\207" [nil] 3 "Short-circuit the plain field search for names.\nThe record itself performs more complex searches on cached name\nvalues, by default the search is not handed to the name field itself.\n\n(fn FIELD REGEX)"] ((record ebdb-record) (_type (subclass ebdb-field-name)) (regexp string)) #[771 "\211\302\303\"\304!>\204\305\306\307D\"\210\211\310H\262\206\311\312\313\314#)\266\203\206\\\315\316\317\320\321\322!\323\"\324\325%\302\303\"\304!>\204L\305\306\307D\"\210\211\326H\262\"\206\\\327\302\330\"\"\207" [cl-struct-ebdb-record-cache-tags inhibit-changing-match-data slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1 #1# nil t string-match seq-find make-byte-code 257 "\300\302\303\304#)\207" vconcat vector [inhibit-changing-match-data nil t string-match] 8 "\n\n(fn N)" 2 ebdb-field-search name] 10 "\n\n(fn RECORD TYPE REGEXP)"] ((record ebdb-record-person) (_type (subclass ebdb-field-name)) (regexp string)) #[1028 " \206\300\301\302\303\304\305!\306\"\307\310%\311\312\"\"\207" [cl-some make-byte-code 257 "\301\300\"\207" vconcat vector [ebdb-field-search] 4 "\n\n(fn NAME)" slot-value aka] 11 "\n\n(fn CL--CNM RECORD TYPE REGEXP)"] ((record ebdb-record) (_type (subclass ebdb-field-notes)) (regexp string)) #[771 "\300\301\"\211\205\f\302\"\207" [slot-value notes ebdb-field-search] 7 "\n\n(fn RECORD TYPE REGEXP)"] ((record ebdb-record-entity) (_type (subclass ebdb-field-phone)) (regexp string)) #[771 "\301!\211\2058\302\303\304\305#)\266\203\2068\30628\211\211\2055\211@\307\"\203.\310\306\304\"\210A\266\202\202\2620\207" [inhibit-changing-match-data ebdb-record-phone #1# nil t string-match found ebdb-field-search throw] 11 "\n\n(fn RECORD TYPE REGEXP)"] ((record ebdb-record-entity) (_type (subclass ebdb-field-address)) (regexp string)) #[771 "\301!\211\2058\302\303\304\305#)\266\203\2068\30628\211\211\2055\211@\307\"\203.\310\306\304\"\210A\266\202\202\2620\207" [inhibit-changing-match-data ebdb-record-address #1# nil t string-match found ebdb-field-search throw] 11 "\n\n(fn RECORD TYPE REGEXP)"] ((record ebdb-record-entity) (_type (subclass ebdb-field-mail)) (regexp string)) #[771 "\301\302\211\303$\211\205;\304\302\303\305#)\266\203\206;\3062;\211\211\2058\211@\307\"\2031\310\306\303\"\210A\266\202\202\2620\207" [inhibit-changing-match-data ebdb-record-mail nil t #1# string-match found ebdb-field-search throw] 11 "\n\n(fn RECORD TYPE REGEXP)"] ((record ebdb-record-person) (_type (eql organization)) (regexp string)) #[771 "\301\302\303\304\305\306!\307\"\310\311%\312\313\"\314!>\204!\315\316\317D\"\210\211\320H\262\"\207" [cl-struct-ebdb-record-cache-tags seq-find make-byte-code 257 "\300\302\303\304#)\207" vconcat vector [inhibit-changing-match-data nil t string-match] 8 "\n\n(fn O)" slot-value cache type-of signal wrong-type-argument ebdb-record-cache 3] 10 "\n\n(fn RECORD TYPE REGEXP)"] ((record ebdb-record-organization) (_type (eql organization)) (regexp string)) #[771 "\300\301#\207" [ebdb-record-search ebdb-field-name] 7 "\n\n(fn RECORD TYPE REGEXP)"] ((record ebdb-record) (cls (subclass ebdb-field-user)) criterion) #[771 "\3002*\301!\211\205'\211@\302\"\203 \303\"\203 \304\300\305\"\210A\266\202\202\2620\207" [found ebdb-record-user-fields object-of-class-p ebdb-field-search throw t] 8 "\n\n(fn RECORD CLS CRITERION)"] ((record ebdb-record-person) (_type (eql organization)) (regex string)) #[771 "\302\303\304\305\306\307!\310\"\311\312%\313\314\"\315!>\204!\316\317\320D\"\210\211\321H\262\"\2067\211\322\323\324\325#)\266\203\207" [cl-struct-ebdb-record-cache-tags inhibit-changing-match-data seq-find make-byte-code 257 "\300\302\303\304#)\207" vconcat vector [inhibit-changing-match-data nil t string-match] 8 "\n\n(fn ORG)" slot-value cache type-of signal wrong-type-argument ebdb-record-cache 3 #1# nil t string-match] 10 "\n\n(fn RECORD TYPE REGEX)"] ((record ebdb-record) (_type (eql dirty)) _criterion) #[771 "\300\301\"\207" [slot-value dirty] 6 "\n\n(fn RECORD TYPE CRITERION)"] ((record ebdb-record) (_type (eql database)) (db ebdb-db)) #[771 "\211\301\302\"\303!>\204\304\305\306D\"\210\211\307H\262\235\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7] 9 "\n\n(fn RECORD TYPE DB)"] ((record ebdb-record) (_type (eql record-class)) (class symbol)) #[771 "\300\"\207" [object-of-class-p] 6 "\n\n(fn RECORD TYPE CLASS)"] ebdb-search-read (field-class) "Prompt user for a string to match against instances of FIELD-CLASS.\nIn most cases this is a simple regexp, but field classes can\nprompt users for more complex search criteria, if necessary.\n\n(fn FIELD-CLASS)" ((cls (subclass ebdb-field))) #[257 "\301\302\303\304!\203\305\202\306#!\207" [ebdb-search-invert read-string format "Search records with %s %smatching regexp: " ebdb-field-readable-name "not " #1#] 6 "\n\n(fn CLS)"] ((_cls (subclass ebdb-field-mail))) #[257 "\303\304\305\306 \203 \307\202\310\"\n\311#)\207" [ebdb-completion-list ebdb-search-invert ebdb-hashtable (mail) completing-read format "Search records with mail %smatching regexp: " "not " #1# ebdb-completion-predicate] 5 "\n\n(fn CLS)"] ((field string)) #[257 "\301\302\303\203\f\304\202 \305#!\207" [ebdb-search-invert read-string format "Search records with %s %smatching regexp: " "not " #1#] 6 "Read regexp to search FIELD values of records.\n\n(fn FIELD)"] ((_all symbol)) #[257 "\301\302\303\203 \304\202\f\305\"!\207" [ebdb-search-invert read-string format "Search records %smatching regexp: " "not " #1#] 5 "Read regexp to search across all records.\n\n(fn ALL)"] (:around) (_source) #[514 " \211;\203H\211\300\211\301\302\206\303\304Q\"\203%\305\306\307\211$\266\202\202(\266\202\301\310\2060\303\311Q\"\203B\305\306\307\211$\266\205\202I\266\205\202I\211\207" [nil string-match "\\(?:" "[ \n ]+" "\\)\\'" replace-match #1# t "\\`\\(?:" "\\)"] 13 "Trim string search criteria.\n\n(fn CL--CNM SOURCE)"] provide ebdb] 6)