;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\304\305\306\"\210\304\307\310\"\210\304\311\312\"\210\304\313\314\"\210\300\315!\207" [require ebdb ebdb-format mailabbrev autoload build-mail-aliases "mailalias" browse-url-url-at-point "browse-url" eieio-customize-object "eieio-custom" message-goto-body "message" crm] 3) #@39 Keymap used for EBDB crm completions. (defvar ebdb-crm-local-completion-map (byte-code "\301 \302\"\210\303\304\305#\210\211\207" [crm-local-completion-map make-sparse-keymap set-keymap-parent define-key " " self-insert-command] 5) (#$ . 734)) #@62 Variable holding the record whose field is being customized. (defvar ebdb-customization-record nil (#$ . 987)) (make-variable-buffer-local 'ebdb-customization-record) #@46 Variable holding the field being customized. (defvar ebdb-customization-field nil (#$ . 1160)) (byte-code "\300\301!\210\302\303\304\305\306\307%\210\310\311\312\313\314DD\315\316\317%\210\310\320\312\313\321DD\322\316\323%\210\310\324\312\313\325DD\326\316\327%\210\310\330\312\313\331DD\332\316\333%\210\310\334\312\313\335DD\336\316\337%\210\310\340\312\313\341DD\342\316\343%\210\302\344\304\345\306\307\306\346&\210\310\347\312\313\350DD\351\316\352%\210\353\354\355\356\306\344%\210\353\357\360\361\306\344%\210\353\362\363\364\306\344%\210\353\365\366\367\306\344%\210\353\370\371\372\306\344%\210\353\373\374\375#\210\353\376\377\201@\306\344%\210\353\201A\201B\201C\306\344%\210\353\201D\201E\201F\306\344%\210\353\201G\201H\201I\306\344%\210\353\201J\201K\201L\306\344%\210\353\201M\201N\201O\306\344%\210\353\201P\201Q\201R\306\344%\210\353\201S\201T\201U\306\344%\207" [make-variable-buffer-local ebdb-customization-field custom-declare-group ebdb-record-display nil "Variables that affect the display of EBDB records" :group ebdb custom-declare-variable ebdb-dedicated-window funcall function #[0 "\300\207" [nil] 1] "Make *EBDB* window a dedicated window.\nAllowed values include nil (not dedicated) 'ebdb (weakly dedicated)\nand t (strongly dedicated)." :type (choice (const :tag "EBDB window not dedicated" nil) (const :tag "EBDB window weakly dedicated" ebdb) (const :tag "EBDB window strongly dedicated" t)) ebdb-join-atomic-windows #[0 "\300\207" [t] 1] "When non-nil, have EBDB buffers join atomic windows.\nAtomic windows are window groups that are treated as single\nwindows by other splitting/display code." boolean ebdb-default-window-size #[0 "\300\207" [0.4] 1] "Default size of EBDB popup windows.\nSpecified as a float between 0 and 1, which is interpreted as a\nfractional size of the window that is being split to make way for\nthe *EBDB* buffer." float ebdb-fill-field-values #[0 "\300\207" [t] 1] "When non-nil, fill long field values." (choice (const :tag "Always fill" nil) (const :tag "Never fill" t)) ebdb-user-menu-commands #[0 "\300\207" [nil] 1] "User defined menu entries which should be appended to the EBDB menu.\nThis should be a list of menu entries.\nWhen set to a function, it is called with two arguments RECORD and FIELD\nand it should either return nil or a list of menu entries.\nUsed by `ebdb-mouse-menu'." sexp ebdb-display-hook #[0 "\300\207" [nil] 1] "Hook run after the *EBDB* is filled in." hook ebdb-faces "Faces used by EBDB." faces ebdb-name-face-alist #[0 "\300\207" [((ebdb-record-person . ebdb-person-name) (ebdb-record-organization . ebdb-organization-name))] 1] "Alist of record class types to the face names.\nFaces are used to font-lock their names in the *EBDB* buffer." (repeat (cons (ebdb-record :tag "Record type") (face :tag "Face"))) custom-declare-face ebdb-person-name ((t (:inherit font-lock-function-name-face))) "Face used for EBDB person names." ebdb-organization-name ((t (:inherit font-lock-type-face))) "Face used for EBDB organization names." ebdb-marked ((t (:background "LightBlue"))) "Face used for currently-marked records." ebdb-label ((t (:inherit font-lock-variable-name-face))) "Face used for EBDB field labels." ebdb-field-url ((t (:inherit link))) "Face used for clickable links/URLs in field values." ebdb-field-hidden ((t (:inherit font-lock-constant-face))) "Face used for placeholder text for fields that aren't actually displayed." ebdb-phone-default ((t :inherit default)) "Base face used for all phone fields." ebdb-address-default ((t :inherit default)) "Base face used for all address fields." ebdb-mail-default ((t :inherit default)) "Base face used for all mail fields." ebdb-defunct ((t :foreground "gray80")) "Face used to display defunct things." ebdb-role-defunct ((t :inherit ebdb-defunct)) "Face used to display defunct roles." ebdb-mail-defunct ((t :inherit ebdb-defunct ebdb-mail-default)) "Face used to display a defunct mail address." ebdb-mail-primary ((t (:inherit font-lock-builtin-face ebdb-mail-default))) "Face used to display a record's primary mail address." ebdb-db-char ((t (:inherit shadow))) "Face used to display a databases's identifying character string."] 8) #@65 Default name of the EBDB buffer, without surrounding asterisks. (defvar ebdb-buffer-name "EBDB" (#$ . 5377)) #@156 EBDB records list. In the *EBDB* buffers it includes the records that are actually displayed and its elements are (RECORD DISPLAY-FORMAT MARKER-POS MARK). (defvar ebdb-records nil (#$ . 5493)) (make-variable-buffer-local 'ebdb-records) #@267 A list of lists of previously-displayed EBDB records in this buffer. For each search in a user-initiated EBDB buffer, the previously-displayed EBDB records are pushed here, as a list of UUIDs. ebdb-mode keybindings make it possible to pop back to previous records. (defvar ebdb-search-history nil (#$ . 5736)) (make-variable-buffer-local 'ebdb-search-history) #@162 Precalculated mode line info for EBDB commands. This is a vector [INVERT-M INVERT]. INVERT-M is the mode line info if variable `ebdb-search-invert' is non-nil. (defvar ebdb-modeline-info (make-vector 2 nil) (#$ . 6104)) #@192 Ensure that RECORDS is a list of records. If RECORDS is a single record turn it into a list. If FULL is non-nil, assume that RECORDS include display information. (fn RECORDS &optional FULL) (defalias 'ebdb-record-list #[513 "\205\211\203\300@!\203C\207\207\300!\203C\207\207" [eieio-object-p] 4 (#$ . 6332)]) #@108 Return variable `ebdb-search-invert' and set it to nil. To set it again, use command `ebdb-search-invert'. (defalias 'ebdb-search-invert-p #[0 "\302 \303\302I\210 \304\302I\210\211\207" [ebdb-search-invert ebdb-modeline-info nil 0 1] 4 (#$ . 6664)]) #@183 Toggle inversion of the next search command. With prefix ARG a positive number, invert next search. With prefix ARG a negative number, do not invert next search. (fn &optional ARG) (defalias 'ebdb-search-invert #[256 "\211\247\203 \302W\206\211\247?\205? \302\205\303I\210 \304\205&\305\306!I\210\307 \207" [ebdb-search-invert ebdb-modeline-info 0 "inv" 1 substitute-command-keys "\\\\[ebdb-search-invert]" ebdb-prefix-message] 5 (#$ . 6923) "P"]) #@56 Display a message about selected EBDB prefix commands. (defalias 'ebdb-prefix-message #[0 "\301\302\303\234\304\234#\211\305\230?\205\306\307\"\207" [ebdb-modeline-info ebdb-concat " " 0 1 "" message "%s"] 5 (#$ . 7406)]) #@264 Return list of records to operate on. Normally this list includes only the current record, but if any records in the current buffer are marked, they are returned instead. If FULL is non-nil, the list of records includes display information. (fn &optional FULL) (defalias 'ebdb-do-records #[256 "\301\302\"\211\206\f\303\304!C\301\305\"\262\203\211\202\306\307\"\207" [ebdb-records seq-filter #[257 "\3008\207" [3] 3 "\n\n(fn R)"] ebdb-current-record t #[257 "\300@!\207" [eieio-object-p] 3 "\n\n(fn R)"] mapcar car] 6 (#$ . 7640)]) #@57 Keymap for EBDB. This is a child of `special-mode-map'. (defvar ebdb-mode-map (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\307#\210\301\310\311#\210\301\312\313#\210\301\314\315#\210\301\316\317#\210\301\320\321#\210\301\322\323#\210\301\324\325#\210\301\326\327#\210\301\330\331#\210\301\332\331#\210\301\333\334#\210\301\335\334#\210\301\336\337#\210\301\340\341#\210\301\342\343#\210\301\344\345#\210\301\346\347#\210\301\350\351#\210\301\352\353#\210\301\354\355#\210\301\356\357#\210\301\360\361#\210\301\362\363#\210\301\364\365#\210\301\366\365#\210\301\367\370#\210\301\371\372#\210\301\373\374#\210\301\375\376#\210\301\377\201@#\210\301\201A\201B#\210\301\201C\201D#\210\301\201E\201F#\210\301\201G\201H#\210\301\201I\201J#\210\301\201K\201L#\210\301\201M\201N#\210\301\201O\201P#\210\301\201Q\201R#\210\301\201S\201T#\210\301\201U\201V#\210\301\201W\201X#\210\301\201Y\201Z#\210\301\201[\201\\#\210\301\201]\201^#\210\301\201_\201^#\210\301\201`\201^#\210\301\201a\201b#\210\301\201c\201b#\210\301\201d\201b#\210\301\201e\201f#\210\301\201g\201f#\210\301\201h\201f#\210\301\201i\201j#\210\301\201k\201j#\210\301\201l\201j#\210\301\201m\201n#\210\301\201o\201n#\210\301\201p\201n#\210\301\201q\201r#\210\301\201s\201r#\210\301\201t\201r#\210\301\201u\201v#\210\301\201w\201v#\210\301\201x\201v#\210\301\201y\201z#\210\301\201{\201z#\210\301\201|\201z#\210\301\201}\201~#\210\301\201}\201~#\210\301\201\201~#\210\301\201\200\201\201#\210\301\201\202\201\203#\210\301\201\204\201\203#\210\301\201\205\201\203#\210\301\201\206\201\207#\210\301\201\210\201\211#\210\301\201\212\201\213#\210\301\201\214\201\215#\210\301\201\216\201\217#\210\211\207" [make-sparse-keymap define-key "!" ebdb-search-invert " " ebdb-record-action "A" ebdb-mail-aliases "c" ebdb-create-record "C" ebdb-create-record-extended "R" ebdb-create-record-and-role "e" ebdb-edit-field "E" ebdb-edit-field-customize ";" ebdb-edit-foo "n" ebdb-next-record "p" ebdb-prev-record "N" ebdb-next-field " " "P" ebdb-prev-field [backtab] "dc" ebdb-copy-records "dm" ebdb-move-records "de" ebdb-customize-database "dr" ebdb-reload-database "dd" ebdb-disable-database "r" ebdb-reformat-records "f" ebdb-format-to-tmp-buffer "F" ebdb-format-these-records "I" ebdb-cite-records-ebdb " " ebdb-delete-field-or-record "i" ebdb-insert-field "s" ebdb-save-ebdb "" "t" ebdb-toggle-records-format "T" ebdb-toggle-all-records-format "#" ebdb-toggle-record-mark [134217763] ebdb-toggle-all-record-marks [67108899] ebdb-unmark-all-records "o" ebdb-omit-records "m" ebdb-mail "M" ebdb-mail-each [134217828] ebdb-dial "h" ebdb-info "?" ebdb-help "wr" ebdb-copy-records-as-kill "wf" ebdb-copy-fields-as-kill "wm" ebdb-copy-mail-as-kill "=" delete-other-windows "bc" ebdb-clone-buffer "br" ebdb-rename-buffer "//" ebdb "/1" ebdb-search-single-record "/n" ebdb-search-name "|n" "+n" "/o" ebdb-search-organization "|o" "+o" "/p" ebdb-search-phone "|p" "+p" "/a" ebdb-search-address "|a" "+a" "/m" ebdb-search-mail "|m" "+m" "/x" ebdb-search-user-fields "|x" "+x" "/c" ebdb-search-modified "|c" "+c" "/t" ebdb-search-tags "|t" "+t" "/C" ebdb-search-record-class "|C" "+d" ebdb-search-duplicates "/D" ebdb-search-database "|D" "+D" "nw" ebdb-display-all-records "nd" ebdb-display-current-record "^" ebdb-search-pop [mouse-3] ebdb-mouse-menu [mouse-2] #[257 "\212\301\302!!\210\303\304\305!\")\207" [current-prefix-arg posn-set-point event-end ebdb-toggle-records-format ebdb-do-records t] 4 "\n\n(fn EVENT)" "e"]] 5) (#$ . 8192)) #@131 Return the record under point. If FULL is non-nil, return a list of (record formatter position-marker mark). (fn &optional FULL) (defalias 'ebdb-current-record #[256 "\302=\204\n\303\304!\210\305o\204m\203`S\202`\306\"\307\204$\303\310!\210 8\262\2031\211\2023\211@\207" [major-mode ebdb-records ebdb-mode error "This only works while in EBDB buffers" get-text-property ebdb-record-number nil "Not a EBDB record"] 5 (#$ . 11881)]) #@34 Return record field under point. (defalias 'ebdb-current-field #[0 "\300 \204 \301\302!\210\303`\304\"\206.\303l\203\305`\304\306\307 $\202&\310`\304\306\311 $\304\"\206.\301\312!\207" [ebdb-current-record error "Not a EBDB record" get-text-property ebdb-field previous-single-property-change nil line-beginning-position next-single-property-change line-end-position "No field at point"] 6 (#$ . 12334)]) (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-formatter-ebdb-p eieio-make-class-predicate ebdb-formatter-ebdb ebdb-formatter-ebdb--eieio-childp eieio-make-child-predicate ebdb-formatter-ebdb-child-p make-obsolete "use (cl-typep ... \\='ebdb-formatter-ebdb) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-formatter-freeform) ((post-format-function :initform #'text-mode)) (:documentation "Abstract formatter base class for *EBDB* buffer(s)." :abstract t)] 6) #@77 You cannot create a new object of type `ebdb-formatter-ebdb'. (fn &rest _) (defalias 'ebdb-formatter-ebdb #[128 "\300\301!\207" [error "Class ebdb-formatter-ebdb is abstract"] 3 (#$ . 13358)]) (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-formatter-ebdb-oneline-p eieio-make-class-predicate ebdb-formatter-ebdb-oneline ebdb-formatter-ebdb-oneline--eieio-childp eieio-make-child-predicate ebdb-formatter-ebdb-oneline-child-p make-obsolete "use (cl-typep ... \\='ebdb-formatter-ebdb-oneline) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-formatter-ebdb) nil (:documentation "Single line formatter for *EBDB* buffers.")] 6) #@84 Create a new object of class type `ebdb-formatter-ebdb-oneline'. (fn &rest SLOTS) (defalias 'ebdb-formatter-ebdb-oneline #[128 "\300\301\302#\207" [apply make-instance ebdb-formatter-ebdb-oneline] 5 (#$ . 14136)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-formatter-ebdb-oneline compiler-macro ebdb-formatter-ebdb-oneline--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-formatter-ebdb-oneline--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 (#$ . 14499)]) (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-formatter-ebdb-multiline-p eieio-make-class-predicate ebdb-formatter-ebdb-multiline ebdb-formatter-ebdb-multiline--eieio-childp eieio-make-child-predicate ebdb-formatter-ebdb-multiline-child-p make-obsolete "use (cl-typep ... \\='ebdb-formatter-ebdb-multiline) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-formatter-ebdb) nil (:documentation "Multi-line formatter for *EBDB* buffers.")] 6) #@86 Create a new object of class type `ebdb-formatter-ebdb-multiline'. (fn &rest SLOTS) (defalias 'ebdb-formatter-ebdb-multiline #[128 "\300\301\302#\207" [apply make-instance ebdb-formatter-ebdb-multiline] 5 (#$ . 15333)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-formatter-ebdb-multiline compiler-macro ebdb-formatter-ebdb-multiline--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-formatter-ebdb-multiline--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 (#$ . 15706)]) (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\306\307\310\311&\210\300\320\302\303\321DD\322\306\307\310\311&\210\300\323\302\303\324DD\325\306\326\310\311&\210\300\327\302\303\330DD\331\306\307\310\311&\210\300\332\302\303\333DD\334\306\335\310\311&\207" [custom-declare-variable ebdb-default-multiline-include funcall function #[0 "\300\207" [nil] 1] "A list of field types to include in multiline display.\nValid list values include all field class names (ebdb-field-*),\nas well as the shortcuts 'mail, 'phone, 'address, 'notes, 'tags,\nand 'role, and the special shortcuts 'mail-primary,\n'mail-defunct, 'mail-not-defunct, 'role-defunct, and\n'role-not-defunct.\n\nIf this option is set, *only* fields listed here will be\ndisplayed. Also see `ebdb-default-multiline-exclude'." :type list :group ebdb-record-display ebdb-default-multiline-exclude #[0 "\300\207" [(ebdb-field-uuid ebdb-field-timestamp ebdb-field-creation-date mail-defunct role-defunct)] 1] "A list of field types to exclude in multiline display.\nValid list values include all field class names (ebdb-field-*),\nas well as the shortcuts 'mail, 'phone, 'address, 'notes, 'tags,\nand 'role, and the special shortcuts 'mail-primary,\n'mail-defunct, 'mail-not-defunct, 'role-defunct, and\n'role-not-defunct.\n\nIf `ebdb-default-multiline-include' is set, this option will be\nignored." ebdb-default-multiline-combine #[0 "\300\207" [(ebdb-field-mail ebdb-field-phone)] 1] "A list of field types to combine in the multiline display.\n\"Combine\" means that instances of this field class will all be\ndisplayed on one line.\n\nValid list values include all field class names (ebdb-field-*),\nas well as the shortcuts 'mail, 'phone, 'address, 'notes, 'tags,\nand 'role, and the special shortcuts 'mail-primary,\n'mail-defunct, 'mail-not-defunct, 'role-defunct, and\n'role-not-defunct." ebdb-default-multiline-collapse #[0 "\300\207" [(ebdb-field-address)] 1] "A list of field types to collapse in the multiline display.\n\"Collapse\" means that only the first line of instances of this\nfield class will be displayed.\n\nValid list values include all field class names (ebdb-field-*),\nas well as the shortcuts 'mail, 'phone, 'address, 'notes, 'tags,\nand 'role, and the special shortcuts 'mail-primary,\n'mail-defunct, 'mail-not-defunct, 'role-defunct, and\n'role-not-defunct." ebdb-default-multiline-formatter #[0 "\304\305\306\307\310\311 \312\n\313 & \207" [ebdb-default-multiline-include ebdb-default-multiline-exclude ebdb-default-multiline-combine ebdb-default-multiline-collapse make-instance ebdb-formatter-ebdb-multiline :label "multiline formatter" :include :exclude :combine :collapse] 12] "The default multiline formatter for *EBDB* buffers." ebdb-formatter-ebdb-multiline ebdb-default-oneline-include #[0 "\300\207" [(mail-primary)] 1] "Fields to include in the default oneline view." ebdb-default-oneline-formatter #[0 "\301\302\303\304\305%\207" [ebdb-default-oneline-include make-instance ebdb-formatter-ebdb-oneline :label "oneline formatter" :include] 6] "The default oneline formatter of *EBDB* buffers." ebdb-formatter-ebdb-oneline] 8) #@93 Formatter used for displaying all values of a record. This formatter should not be changed. (defconst ebdb-full-formatter (make-instance 'ebdb-formatter-ebdb-multiline :include nil :exclude nil :combine nil :collapse nil :label "full formatter") (#$ . 19174)) #@262 A list of formatters available in the *EBDB* buffer. This list is also used for toggling layouts. Unless FULL-OKAY is non-nil, do not offer the value of `ebdb-full-formatter' as a choice: that formatter should be selected explicitly. (fn &optional FULL-OKAY) (defalias 'ebdb-available-ebdb-formatters #[256 "\301\302\303\304\305\306!\307\"\310\311%\"\207" [ebdb-formatter-tracker seq-filter make-byte-code 257 "\302\303\"\205\300\206\211 \232?\207" vconcat vector [ebdb-full-formatter object-of-class-p ebdb-formatter-ebdb] 4 "\n\n(fn F)"] 8 (#$ . 19441)]) #@56 Select a formatter interactively using the prefix arg. (defalias 'ebdb-formatter-prefix #[0 "\203 \207\n\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter] 1 (#$ . 20014)]) (byte-code "\300\301\302\303#\210\304\305\306\307\306\310%\210\304\311\312\313\314\315%\210\304\311\306\316\306\317%\210\304\311\306\320\306\321%\210\304\311\306\322\306\323%\210\304\324\325\326\314\327%\210\304\324\306\330\306\331%\210\304\324\306\332\306\333%\210\304\324\306\334\306\335%\210\304\324\306\336\306\337%\210\304\324\306\340\306\341%\210\304\324\306\342\306\343%\210\304\324\306\344\306\345%\210\304\324\306\346\314\347%\210\304\324\306\350\314\351%\210\304\324\306\352\306\353%\210\304\324\306\354\306\355%\210\304\356\306\357\314\360%\210\304\361\306\362\306\363%\210\304\361\364\365\314\366%\210\304\367\306\370\306\371%\210\304\367\306\372\306\373%\210\374\375\376\375\377\306#\201@#\210\304\375\306\201A\306\201B%\210\304\375\306\211\211\201C%\210\374\201D\376\201D\201E\306#\201F#\210\304\201D\306\201G\306\201H%\210\304\201D\306\211\211\201I%\207" [put ebdb-formatter-prefix byte-optimizer byte-compile-inline-expand cl-generic-define-method ebdb-record-db-char-string nil ((record ebdb-record)) #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\262\310\311\312\313\"\"\260\314\315\316#\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 delq nil mapcar #[257 "\300\301\"\205 \300\301\"\207" [slot-value buffer-char] 4 "\n\n(fn D)"] propertize face ebdb-db-char] 7 "Return a char string indicating RECORDs databases.\n\n(fn RECORD)"] ebdb-fmt-field-label (:around) ((_fmt ebdb-formatter-ebdb) _field _style &optional (_record ebdb-record)) t #[1156 "\211\203 \211A\262\242\202\203\301\302\303\304G\\D\"\210\305 \306\307#\207" [ebdb-record signal wrong-number-of-arguments nil 4 propertize face ebdb-label] 11 "\n\n(fn FMT FIELD STYLE &optional (_RECORD ebdb-record))"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-phone) (_style (eql oneline)) &optional (_record ebdb-record)) #[899 "\211\203 \211A\262\242\202\203\301\302\303\304G\\D\"\210\305\306\307!\"\207" [ebdb-record signal wrong-number-of-arguments nil 4 format "phone (%s)" ebdb-field-label] 10 "\n\n(fn FMT FIELD STYLE &optional (_RECORD ebdb-record))"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-address) (_style (eql oneline)) &optional (_record ebdb-record)) #[899 "\211\203 \211A\262\242\202\203\301\302\303\304G\\D\"\210\305\306\307!\"\207" [ebdb-record signal wrong-number-of-arguments nil 4 format "address (%s)" ebdb-field-label] 10 "\n\n(fn FMT FIELD STYLE &optional (_RECORD ebdb-record))"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-relation) _style &optional (record ebdb-record)) #[899 "\211\203 \211A\262\242\202\203\301\302\303\304G\\D\"\210\305\306\"\307!\232\203/\305\310\"\2022\311!\262\207" [ebdb-record signal wrong-number-of-arguments nil 4 slot-value rel-uuid ebdb-record-uuid rel-label ebdb-field-label] 10 "\n\n(fn FMT FIELD STYLE &optional (RECORD ebdb-record))"] ebdb-fmt-field (:around) ((_fmt ebdb-formatter-ebdb) (field ebdb-field) _style (_record ebdb-record)) #[1285 " \300\203\211\301\230\262\203\302\202\303#\207" [propertize "" "" ebdb-field] 10 "Put the 'ebdb-field text property on FIELD. The value of the\nproperty is the field instance itself.\n\n(fn CL--CNM FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field) (_style (eql oneline)) (_record ebdb-record)) #[1028 "\300!\301\302\"\211@A\211\303\304#\205\303\305\306\307#P\266\202\207" [ebdb-string split-string "\n" propertize help-echo "…" cursor-intangible t] 15 "Handle the `oneline' style in EBDB buffers.\nPrint the first line, add an ellipsis, and add a tooltip.\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-url) _style (_record ebdb-record)) #[1028 "\300\301!\302\303#\207" [propertize ebdb-string face ebdb-field-url] 8 "Add an appropriate face to url fields.\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (_field ebdb-field-obfuscated) _style (_record ebdb-record)) #[1028 "\300\301\302\303#\207" [propertize "HIDDEN" face ebdb-field-hidden] 8 "\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-bank-account) _style (_record ebdb-record)) #[1028 "\300\301\302\303\"\302\304\"#\207" [format "%s: %s" slot-value bank-name account-name] 11 "\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-relation) _style (record ebdb-record)) #[1028 "\3001\301\"\302!\2620\207\210\303\207" [(ebdb-related-unfound) ebdb-record-related ebdb-string "record not loaded"] 7 "Format relation-field FIELD for RECORD.\nIf FIELD really belongs to RECORD, display the \"other end\" of\nthe relation. If this RECORD is the \"other end\", display the\nrecord that actually owns the field.\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-passport) _style (_record ebdb-record)) #[1028 "\300\301\302\303\"\302\304\"#\207" [format "(%s) %s" slot-value country number] 11 "\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-mail) _style (_record ebdb-record)) #[1028 "\300\301\"\302!\303=\203\304\202\305=\203\306\202\307\211\203(\310\311#\202)\207" [slot-value priority ebdb-string primary ebdb-mail-primary defunct ebdb-mail-defunct ebdb-mail-default propertize face] 11 "Add an appropriate face to primary and defunct mails.\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (_field ebdb-field-phone) _style (_record ebdb-record)) #[1285 "\300 \301\302#\207" [propertize face ebdb-phone-default] 9 "Add an appropriate face to phones.\n\n(fn CL--CNM FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (_field ebdb-field-address) _style (_record ebdb-record)) #[1285 "\300 \301\302#\207" [propertize face ebdb-address-default] 9 "Add an appropriate face to addresses.\n\n(fn CL--CNM FMT FIELD STYLE RECORD)"] ((fmt ebdb-formatter-ebdb) (field ebdb-field-role) _style (record ebdb-record)) #[1028 "\3011%\302\303\"\304\"\305!>\204\306\307\310D\"\210\211\311H\2620\202'\210\312\302\313\"\203A\314\315\316 \302\313\"\317 $#\202B\211\302\320\"\203Q\321\322\323#\202R\211\266\202\207" [cl-struct-ebdb-record-cache-tags (ebdb-related-unfound) slot-value ebdb-record-related cache type-of signal wrong-type-argument ebdb-record-cache 1 "record not loaded" mail format "%s (%s)" ebdb-fmt-field oneline defunct propertize face ebdb-role-defunct] 14 "\n\n(fn FMT FIELD STYLE RECORD)"] ((_fmt ebdb-formatter-ebdb) (field ebdb-field-image) _style (record ebdb-record)) #[1028 "\301 \203\302\303!\210\304\305\306\307\"\310\311\312\257\"\207\313\207" [image-map display-images-p require image propertize " " display ebdb-field-image-get rear-nonsticky (display) keymap ""] 12 "\n\n(fn FMT FIELD STYLE RECORD)"] ebdb-fmt-record ((_fmt ebdb-formatter-ebdb) (_record ebdb-record)) #[771 " \300P\207" ["\n"] 5 "\n\n(fn CL--CNM FMT RECORD)"] ebdb-fmt-record-header ((fmt ebdb-formatter-ebdb) (record ebdb-record) &optional header-fields) #[770 "\302!\303\304!\305\303\306\307\"\310!>\204\311\312\313D\"\210\211\314H\262\315\316 \"A#Q\317\320\306\321\"%\205M\322\323\324\325\326\327\330  \"\331\"\332\333%\305#PP\207" [cl-struct-ebdb-record-cache-tags ebdb-name-face-alist eieio-object-class-name propertize ebdb-record-db-char-string " " slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1 face assoc ebdb-record ebdb-field name " - " mapconcat make-byte-code 257 "\302\303\"\302\304\"\211\305\306\307\310\311\312\300\301#\313\"\314\315%\316#\266\202\207" vconcat vector [map-elt style inst mapconcat make-byte-code 257 "\303\300\302\301$\207" vconcat vector [ebdb-fmt-field] 6 "\n\n(fn F)" " "] 14 "\n\n(fn ARG0)"] 14 "\n\n(fn FMT RECORD &optional HEADER-FIELDS)"] (:around) ((_fmt ebdb-formatter-ebdb-multiline) (_record ebdb-record) &optional _header-fields) #[1027 " \300P\207" ["\n"] 6 "\n\n(fn CL--CNM FMT RECORD &optional HEADER-FIELDS)"] ebdb-fmt-compose-fields ((fmt ebdb-formatter-ebdb-multiline) (record ebdb-record) &optional field-alist _depth) #[1026 "\205Y\303\304\305\306\307\310  \"\311\"\312\313%\"\314\315\303\316\"\"\317\320\"\321\322\323\\\324\"\325 \326\327!r\211q\210\304\330\331\307\310!\332\"\333$\216\334\304\305\335\307\310!\336\"\337\313%\"\210\340 *\262+\266\203\207" [paragraph-start fill-prefix fill-column mapcar make-byte-code 257 "\302\303\"\302\304\"\302\305\"\211\306\300G\307U\203@\202\301$\310\311\312\313\314\315\316\317\300\301 #\320\"\321\322%\"\323#B\266\203\207" vconcat vector [map-elt style inst class ebdb-fmt-field-label 1 mapconcat identity mapcar make-byte-code 257 "\303\300\302\301$\207" vconcat vector [ebdb-fmt-field] 6 "\n\n(fn F)" ", "] 19 "\n\n(fn ARG0)" apply max #[257 "\300@!\207" [string-width] 3 "\n\n(fn S)"] format " %%%ds" "[ ]* [[:alpha:] ]+: " make-string 3 32 window-body-width generate-new-buffer " *temp*" 0 "\301\300!\205 \302\300!\207" [buffer-name kill-buffer] 2 mapc "\211@A\211`\303\300\"\304\305Rc\210\305\306\307\310#)\266\203\2030\311\212b\210\306y\210`)`\"\2028\n\2058\312`\"\262\266\202\207" [inhibit-changing-match-data ebdb-fill-field-values format ": " "\n" nil t string-match indent-region fill-region] 13 buffer-string] 15 "Turn FIELD-ALIST into a string.\nThe FIELD-ALIST structure is that returned by\n`ebdb-fmt-collect-fields'. It is an alist with three keys:\n'class, 'style, and 'inst.\n\nThis function passes the class and field instances to FMT, which\nformats them appropriately, and concatenates them into a\nstring.\n\n(fn FMT RECORD &optional FIELD-ALIST DEPTH)"] ((fmt ebdb-formatter-ebdb-oneline) (record ebdb-record) &optional field-list _depth) #[1026 "\205\300\301\302\303\304\305\306\n\n\"\307\"\310\311%\312#P\260\207" [" - " mapconcat make-byte-code 257 "\302\303\"\302\304\"\211\305\306\307\310\311\312\300\301 #\313\"\314\315%\316#\266\202\207" vconcat vector [map-elt inst style mapconcat make-byte-code 257 "\303\300\302\301$\207" vconcat vector [ebdb-fmt-field] 6 "\n\n(fn F)" " "] 14 "\n\n(fn ARG0)" ", "] 13 "\n\n(fn FMT RECORD &optional FIELD-LIST DEPTH)"] defalias ebdb-make-buffer-name cl-generic-define (&context (major-mode t)) "Return the buffer to be used by EBDB.\n\nThis examines the current major mode, and makes a decision from\nthere. The result is passed to `with-current-buffer', so a\nbuffer object or a buffer name are both acceptable.\n\n(fn &context (major-mode t))" (&context (major-mode ebdb-mode)) #[0 "p\207" [] 1 "If we're already in a ebdb-mode buffer, continue using that\nbuffer."] #[0 "\301\302\"\207" [ebdb-buffer-name format "*%s*"] 3 "If we're in a totally unrelated buffer, use the value of\n `ebdb-buffer-name'."] ebdb-popup-window (major-mode) "Return a spec for how to pop up a window on an *EBDB* buffer.\nThis generic function dispatches on the current value of\nmajor-mode. The return value should be a three-element list\nof (window split direction), in which WINDOW is the window to\nsplit, SPLIT is either an integer, specifying number of\nrows/columns, or a float specifying what percentage of window\nreal estate the pop-up should occupy, and DIRECTION is one of the\nsymbols `left', `right', `above' or `below'. SPLIT can be nil,\nin which case the value of `ebdb-default-window-size' will be\nused. DIRECTION can also be nil, in which case the direction\nwill either be `right' or `below', depending on the height and\nwidth of the window to be split.\n\nAlternately, the entire return value can be nil, which means\ncontinue using the current window.\n\n(fn MAJOR-MODE)" (&context (major-mode ebdb-mode)) #[0 "\300\207" [nil] 1 "When popping up from an existing *EBDB* buffer, just reuse the window.\nIe, don't pop up at all."] #[0 "\301 D\207" [ebdb-default-window-size get-buffer-window] 2 "Return a default pop-up spec for an unspecified mode.\nIf there's no specialization for the current mode, default to\nsplitting the current window, using `ebdb-default-window-size'."]] 6) #@369 Display RECORDS using FMT. If APPEND is non-nil append RECORDS to the already displayed records. Otherwise RECORDS overwrite the displayed records. SELECT and POP are passed directly to `ebdb-pop-up-window'. BUF indicates which *EBDB* buffer to use, or nil to generate a buffer name based on the current major mode. (fn RECORDS &optional FMT APPEND SELECT POP BUF) (defalias 'ebdb-display-records #[1537 "C\211\242\204 \211\240\210\206\305 \205\306@!\307Cr\310!q\210\2039\311\312 \"\313\314\315 \"!\316\"\262 \210\317\320!\204B\320 \210\311\321\322\323\324\325 #\326\"\327\330% \"\331#\210\n\204l \204l\332\333!\210\334\335\307\336 \210\337\242\"c\210 \211\203\250\211@\3408`\307\223\262\341 \242@\"c\210\342`\343$\210T\262A\266\202\202~\210\344\242\"c\210\345\346!\210)\266\n\204\305 \204\305\332\347!\210\350\307!\210\211\242\206\317eb\210\351\352 !\205\364\353\352 !r\321\334\354\324\325!\355\"\340$\216\356@\357\"\210\360 *\262)\266\203\207" [ebdb-default-multiline-formatter ebdb-records ebdb-silent-internal ebdb-silent inhibit-read-only ebdb-make-buffer-name ebdb-record-uuid nil get-buffer-create mapcar car sort delete-dups append #[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] 10 "\n\n(fn X Y)"] derived-mode-p ebdb-mode make-byte-code 257 "\303 \301\304!\230\203\302\240\210\300\242\305F\207" vconcat vector [make-marker ebdb-record-uuid nil] 6 "\n\n(fn R)" ebdb-pop-up-window message "Formatting EBDB..." 0 t erase-buffer ebdb-fmt-header 2 ebdb-fmt-record put-text-property ebdb-record-number ebdb-fmt-footer run-hooks ebdb-display-hook "Formatting EBDB...done." set-buffer-modified-p window-live-p get-buffer-window internal--before-with-selected-window "\301\300!\207" [internal--after-with-selected-window] select-window norecord recenter] 20 (#$ . 32281)]) #@163 Undisplay records in *EBDB* BUFFER, leaving the buffer empty. If BUFFER is nil, use the *EBDB* buffer associated with the current buffer. (fn &optional BUFFER) (defalias 'ebdb-undisplay-records #[256 "\303\206\304 !\211\205\"r\211q\210\305=\205!\306\307 \210)\310\311\310!)\207" [major-mode inhibit-read-only ebdb-records get-buffer ebdb-make-buffer-name ebdb-mode t erase-buffer nil set-buffer-modified-p] 4 (#$ . 34330)]) #@94 Used as the value of `revert-buffer-function' in *EBDB* buffers. (fn IGNORE-AUTO NOCONFIRM) (defalias 'ebdb-redisplay-all-records #[514 "\301\302\"\303 \210\304!\207" [ebdb-records mapcar car ebdb-undisplay-records ebdb-display-records] 5 (#$ . 34770)]) (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-redisplay-record cl-generic-define (record action full-record) nil "Redisplay RECORD in current buffer, as specified by ACTION.\n\nFULL-RECORD includes layout information, in case that needs to be\naltered.\n\nThis function may return a symbol value, which is used to pass\ninformation back to `ebdb-redisplay-records'. Currently that\nonly happens when removing records.\n\n(fn RECORD ACTION FULL-RECORD)" cl-generic-define-method ((record ebdb-record) (fmt ebdb-formatter-ebdb) full-record) #[771 "\3008\301\"c\210A\211\240\266\3028\303=\203#\304\305\306\307 #\310#\210\210\311\207" [2 ebdb-fmt-record 3 mark add-face-text-property next-property-change nil line-end-position ebdb-marked replaced] 10 "\n\n(fn RECORD FMT FULL-RECORD)"] ((_record ebdb-record) (_action (eql remove)) full-record) #[771 "\301\"\302\207" [ebdb-records delq removed] 6 "\n\n(fn RECORD ACTION FULL-RECORD)"] ((record ebdb-record) (_action (eql unload)) full-record) #[771 "\300!\211\240\266\211c\210\301c\210\302\207" [ebdb-record-uuid "\n" replaced] 7 "\n\n(fn RECORD ACTION FULL-RECORD)"] ((record ebdb-record) (_action (eql reformat)) full-record) #[771 "\211\240\210\300A@#\207" [ebdb-redisplay-record] 7 "\n\n(fn RECORD ACTION FULL-RECORD)"] ((record ebdb-record) (action (head toggle-mark)) full-record) #[771 "\300\233\211\3008?\205A@\240\266\301A@#\207" [3 ebdb-redisplay-record] 7 "\n\n(fn RECORD ACTION FULL-RECORD)"] ((record ebdb-record) (_action (eql unmark)) full-record) #[771 "\300\233\211\301\240\266\302A@#\207" [3 nil ebdb-redisplay-record] 7 "\n\n(fn RECORD ACTION FULL-RECORD)"]] 6) #@560 Take ACTION to alter the display of RECORDS in one or more EBDB buffers. If ACTION is an instance of `ebdb-formatter-ebdb', then redisplay RECORDS using that formatter. Otherwise, action can be one of: remove: remove RECORDS unload: replace RECORDS with their uuid strings reformat: reformat RECORDS and replace them toggle-mark: toggle the mark for RECORDS If ALL-BUFFERS is t, redisplay RECORDS in all EBDB buffers. If SORT is t, usually because RECORDS have new sortkeys, re-sort the displayed records. (fn RECORDS ACTION &optional ALL-BUFFERS SORT) (defalias 'ebdb-redisplay-records #[1026 "\203\f\304\305\306 \"\202\307\310!\205pC\311\211\211\211\211\211\312 !\262 \313\311\314\315\"\"\262 \211\205A\211@r\211q\210\316 \317\211\317\320\321\322\323\324!\325\"\326$\216\317\311\211\203\371\211@\3272\361\211\3301e\331 0\202g\210\311\232\203q\331\317!\202\205\332 \"\206\205\332\333! \"\206\205\334\327\311\"\262 \326 8\262 \326 >A@8\262\n \204\243\335 \"\262\f\n`X\203\271`\n\206\261dW\203\271\nb\210\212\nb\210\336`\337\"\262 \340#\262\341 `\337\f$\210\342=\203\340\317\262\343>\205\357`\n\206\356d|)0\210A\266\202\202P\210\211\2030\344\314\345\346 \"\"dC\"\211A\262\242\211\203.\211@\341\337$\210\211\262\nT\262 A\266\202\202\266)\266,\210\347\350!\210)A\266\202\202,\262\207" [buffer-undo-list inhibit-read-only inhibit-modification-hooks ebdb-records seq-filter #[257 "r\211q\210\300\301!)\207" [derived-mode-p ebdb-mode] 3 "\n\n(fn B)"] buffer-list derived-mode-p ebdb-mode nil ebdb-record-list delq mapcar #[257 "\211;\203\n\300\301\"\207\207" [ebdb-gethash uuid] 4 "\n\n(fn R)"] buffer-modified-p t make-byte-code 0 "\300?\205\301\302!\207" vconcat vector [restore-buffer-modified-p nil] 2 bail (error) ebdb-current-record assoc ebdb-record-uuid throw cl-position get-text-property ebdb-record-number ebdb-redisplay-record put-text-property removed (removed replaced) append #[257 "\3008\207" [2] 3 "\n\n(fn X)"] cl-subseq run-hooks ebdb-display-hook] 26 (#$ . 36890)]) #@11 EBDB Menu (defvar ebdb-menu nil (#$ . 38971)) (easy-menu-do-define 'ebdb-menu ebdb-mode-map "EBDB Menu" '("EBDB" ("Display" ["Previous field" ebdb-prev-field t] ["Next field" ebdb-next-field t] ["Previous record" ebdb-prev-record t] ["Next record" ebdb-next-record t] "--" ["Show all records" ebdb-display-all-records t] ["Show current record" ebdb-display-current-record t] ["Omit record" ebdb-omit-records t] ["Toggle record mark" ebdb-toggle-record-mark t] "--" ["Toggle layout" ebdb-toggle-records-format t] ["Show all fields" ebdb-display-records-completely t] ["Reformat record" ebdb-reformat-records t]) ("Searching" ["General search" ebdb t] ["Search one record" ebdb-search-single-record t] ["Search name" ebdb-search-name t] ["Search organization" ebdb-search-organization t] ["Search phone" ebdb-search-phone t] ["Search address" ebdb-search-address t] ["Search mail" ebdb-search-mail t] ["Search user fields" ebdb-search-user-fields t] ["Search modified records" ebdb-search-modified t] ["Search duplicates" ebdb-search-duplicates t] "--" ["Old time stamps" ebdb-timestamp-older t] ["New time stamps" ebdb-timestamp-newer t] ["Old creation date" ebdb-creation-older t] ["New creation date" ebdb-creation-newer t] ["Creation date = time stamp" ebdb-creation-no-change t] "--" ["Invert search" ebdb-search-invert t] ["Pop search history" ebdb-search-pop t]) ("Mail" ["Send mail" ebdb-mail t] "--" ["(Re-)Build mail aliases" ebdb-mail-aliases t]) ("Use database" ["Send mail" ebdb-mail t] ["Dial phone number" ebdb-dial t] ["Copy records as kill" ebdb-copy-records-as-kill t] ["Copy fields as kill" ebdb-copy-fields-as-kill t] ["Copy mail as kill" ebdb-copy-mail-as-kill t] ["Follow relation" ebdb-follow-related t] ["Export records in other format" ebdb-format-to-tmp-buffer t]) ("Manipulate database" ["Create new record" ebdb-create-record t] ["Edit current field" ebdb-edit-field t] ["Insert new field" ebdb-insert-field t] ["Edit some field" ebdb-edit-foo t] ["Delete record or field" ebdb-delete-field-or-record t] "--" ["Delete duplicate mails" ebdb-delete-redundant-mails t] "--" ["Edit database" ebdb-customize-database t] ["Reload database" ebdb-reload-database t] ["Disable database" ebdb-disable-database t] "--" ["Save EBDB" ebdb-save t] ["Revert EBDB" revert-buffer t]) ("Help" ["Brief help" ebdb-help t] ["EBDB Manual" ebdb-info t]) "--" ["Quit" quit-window t])) #@46 Keymap used by `ebdb-completing-read-mails'. (defvar ebdb-completing-read-mails-map (byte-code "\301!\302\303\304#\210\302\305\306#\210\302\307\306#\210\211\207" [minibuffer-local-completion-map copy-keymap define-key " " self-insert-command " " ebdb-complete-mail "\211"] 5) (#$ . 41364)) #@755 Display *EBDB* buffer BUF by popping up a new window. If SELECT is non-nil, select the new window after creation. POP is a list of (window split direction), where "window" is the window to be split, "split" says to split it by how much, and "direction" is one of the symbols left, right, above or below. Any of the three elements can be nil. If "window" is nil, use the current window. If "direction" is nil, split either below or right, depending on which dimension is longest. If "split" is nil, split 0.5. If the whole POP argument is nil, re-use the current window. If the option `ebdb-join-atomic-windows' is non-nil, a popped-up buffer window will become part of whichever atomic window it was popped up from. (fn BUF &optional SELECT POP) (defalias 'ebdb-pop-up-window #[769 "\302!\242\303\304\"\305\211\204\313\3068\206%\307!\310!V\203$\311\202%\312\262\204/\305\202tA@\250\203<A@\202t\313A@!\204K\313!\203nA@\206R\314\315>\203`\307!\202d\310!\316Z_!\262\202t\250\205t\262\204\205\211\204\205\317!\210\202\271\303\304\"\262 \203\262\320!\203\262\321\322B\323B\312=\203\252\324B\202\255\325BE\"\202\267\326#\262\327\"\210\330\322#\210\331\305\"\210\205\323\332!\207" [ebdb-default-window-size ebdb-join-atomic-windows get-buffer get-buffer-window t nil 2 window-total-width window-total-height right below floatp round (left right) 1 pop-to-buffer-same-window window-atom-root display-buffer-in-atom-window window side window-height window-width split-window set-window-buffer display-buffer-record-window set-window-prev-buffers select-window] 14 (#$ . 41665)]) (defvar ebdb-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [ebdb-mode-hook variable-documentation put "Hook run after entering EBDB mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp ebdb-mode-map definition-name ebdb-mode] 4) (defvar ebdb-mode-map (make-sparse-keymap)) (byte-code "\301\302N\204\303\301\302\304\305!#\210\306\307!\204\303\307\310\311#\210\312\313 !\210\307\302N\204-\303\307\302\304\314!#\210\306\300!\204B\303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P\303\300\302\304\320!#\210\303\311\321\322#\207" [ebdb-mode-abbrev-table ebdb-mode-map variable-documentation put purecopy "Keymap for `ebdb-mode'." boundp ebdb-mode-syntax-table definition-name ebdb-mode (lambda (#1=#:def-tmp-var) (defvar ebdb-mode-syntax-table #1#)) make-syntax-table "Syntax table for `ebdb-mode'." (lambda (#1#) (defvar ebdb-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `ebdb-mode'." derived-mode-parent special-mode] 5) #@295 Major mode for viewing and editing EBDB records. Derives from `special-mode'; the usual `special-mode' bindings apply. \{ebdb-mode-map} In addition to any hooks its parent mode might have run, this mode runs the hook `ebdb-mode-hook', as the final or penultimate step during initialization. (defalias 'ebdb-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203\314\311\313\310\313N#\210\315 !\204'\316 \317 \"\210\320\f!\211\2035\211\321 =\203;\322\f\323 \"\210\210\324 \325\"\204R *=\204R\326 \325*C#\210\327 !\210\330\f!\210 *\307+\331\332 \333\334\335\257,\306\336!\210\337\340\341\342\"\210\343-.\203\201\344 \210\340\345\346\347\307$\210)\350\351!\207" [delay-mode-hooks major-mode mode-name ebdb-mode-map ebdb-mode-syntax-table ebdb-mode-abbrev-table make-local-variable t special-mode ebdb-mode "EBDB" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table 24 buffer-name " " (:eval (format "%d/%d/%d" (1+ (or (get-text-property (point) 'ebdb-record-number) -1)) (length ebdb-records) (length (ebdb-records)))) (:eval (concat " " (ebdb-concat " " (elt ebdb-modeline-info 0) (elt ebdb-modeline-info 1)))) revert-buffer-function ebdb-redisplay-all-records add-hook write-contents-functions ebdb-save-ebdb always ebdb-mail-aliases post-command-hook force-mode-line-update nil run-mode-hooks ebdb-mode-hook local-abbrev-table truncate-lines mode-line-buffer-identification buffer-offer-save ebdb-mail-alias-alist] 5 (#$ . 44438) nil]) #@194 Save all EBDB databases interactively. Differs from `ebdb-save' in that it also sets all *EBDB* buffers as unmodified. With prefix arg SOME, prompt to save each database. (fn &optional SOME) (defalias 'ebdb-save-ebdb #[256 "\301!\210\302 \204+\303 \211\203*\211@r\211q\210\304\305!\203\"\306\307\310!\210))A\266\202\202 \210\306\207" [inhibit-read-only ebdb-save ebdb-dirty-dbs buffer-list derived-mode-p ebdb-mode t set-buffer-modified-p nil] 5 (#$ . 46072) "p"]) #@56 Menu items for email addresses of RECORD. (fn RECORD) (defalias 'ebdb-sendmail-menu #[257 "\300!\211A\203\301\302\303\304\305\306\307!\310\"\311\312%\"B\202+\307\313@P\314\315@\"D\316#C\207" [ebdb-record-mail "Send mail to..." mapcar make-byte-code 257 "\301\302!\303\304\300\"D\305#\207" vconcat vector [vector ebdb-string ebdb-compose-mail ebdb-dwim-mail t] 7 "\n\n(fn M)" "Send mail to " ebdb-compose-mail ebdb-dwim-mail t] 10 (#$ . 46552)]) #@65 Menu items specifically for FIELD of RECORD. (fn RECORD FIELD) (defalias 'ebdb-field-menu #[514 "\300\301\302\303\304!!\"C\305\306\307\310\311\312  \"\313\"\314\315%\316\317\"\"\320#\207" [append format "Commands for %s Field:" capitalize ebdb-field-readable-name mapcar make-byte-code 257 "\302@\303AK\300\301F\304#\207" vconcat vector [vector funcall t] 7 "\n\n(fn A)" slot-value actions (["Edit Field" ebdb-edit-field t] ["Edit Field Customize" ebdb-edit-field-customize t] ["Delete Field" ebdb-delete-field-or-record t])] 12 (#$ . 47016)]) #@60 Submenu for inserting a new field for RECORD. (fn RECORD) (defalias 'ebdb-insert-field-menu #[257 "\300\301\302\303\304\305\306!\307\"\310\311%\312\313!!\"B\207" ["Insert New Field..." mapcar make-byte-code 257 "\301\302A!\303\300\304AD\305@DF\306#\207" vconcat vector [vector ebdb-field-readable-name ebdb-record-insert-field ebdb-read quote t] 8 "\n\n(fn PAIR)" ebdb-record-field-slot-query eieio-object-class] 9 (#$ . 47573)]) #@40 EBDB mouse menu for EVENT. (fn EVENT) (defalias 'ebdb-mouse-menu #[257 "\302!\210\303 \304 \203\211\203\305!\203\"\202\205q\306\307\310\311\312\313\"\314! >\204:\315\316\317D\"\210\211\320H\262\"\321\322\323\324\325\257\326!\205R\327!\330\331!D\205e\330\332  \"B\205o\307\333\"%!\207" [ebdb-user-menu-commands cl-struct-ebdb-record-cache-tags mouse-set-point ebdb-current-record ebdb-current-field functionp popup-menu append format "Commands for record \"%s\":" slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1 ["Delete Record" ebdb-delete-records t] ["Toggle Record Display Layout" ebdb-toggle-records-format t] ["Fully Display Record" ebdb-display-records-completely t] ["Omit Record" ebdb-omit-records t] ["Merge Record" ebdb-merge-records t] ebdb-record-mail ebdb-sendmail-menu "--" ebdb-insert-field-menu ebdb-field-menu ("--" "User Defined Commands")] 13 (#$ . 48017) "e"]) #@139 Scan for change of PROPERTY matching PREDICATE for N times. Return position of beginning of matching interval. (fn PROPERTY PREDICATE N) (defalias 'ebdb-scan-property #[771 "\300W\203\n\301\202 \302\300W\203d\202e\303!\300`\304\300X\203LeW\203L\305\n\"\211\305S\f\"=\205=!\262\203L\302\n\304$\262\300U\203W\202\261W\203\260\304\211\204\243 \304 $\211\262\203\243U\204\213\305\f\"!\203\213\262\306\262\202^U\203\235\306\262\262\304\262\202^\262\202^\211\262\203\260T\262\202W\211\207" [0 next-single-property-change previous-single-property-change abs nil get-text-property t] 15 (#$ . 48970)]) #@100 Move point to the beginning of the next EBDB record. With prefix N move forward N records. (fn N) (defalias 'ebdb-next-record #[257 "\300\301\302#\211\203\211b\202\303\304\305W\203\306\202\307\"\207" [ebdb-scan-property ebdb-record-number integerp error "No %s record" 0 "next" "previous"] 6 (#$ . 49645) "p"]) #@106 Move point to the beginning of the previous EBDB record. With prefix N move backwards N records. (fn N) (defalias 'ebdb-prev-record #[257 "\300[!\207" [ebdb-next-record] 3 (#$ . 49974) "p"]) #@82 Move point to next (sub)field. With prefix N move forward N (sub)fields. (fn N) (defalias 'ebdb-next-field #[257 "\300\301\302#\211\203\211b\202\303\304\305W\203\306\202\307\"\207" [ebdb-scan-property ebdb-field identity error "No %s field" 0 "next" "previous"] 6 (#$ . 50173) "p"]) #@88 Move point to previous (sub)field. With prefix N move backwards N (sub)fields. (fn N) (defalias 'ebdb-prev-field #[257 "\300[!\207" [ebdb-next-field] 3 (#$ . 50473) "p"]) #@76 Display RECORD's related record from FIELD under point. (fn RECORD FIELD) (defalias 'ebdb-follow-related #[514 "\3011\302\303\"C\304#0\207\210\305\306\307!\"\207" [ebdb-default-multiline-formatter (ebdb-related-unfound) ebdb-display-records ebdb-record-related t message "Field %s provides no relationships" ebdb-field-readable-name] 6 (#$ . 50652) (byte-code "\300 \301 D\207" [ebdb-current-record ebdb-current-field] 2)]) #@105 Mark or unmark RECORD. Use the symbol `mark', or the mark provided by MARK. (fn RECORD &optional MARK) (defalias 'ebdb-toggle-record-mark #[513 "\300\301D\"\210\302\303!\207" [ebdb-redisplay-records toggle-mark ebdb-next-record 1] 6 (#$ . 51090) (byte-code "\300 \301D\207" [ebdb-current-record mark] 2)]) #@43 Reverse the marked status of all records. (defalias 'ebdb-toggle-all-record-marks #[0 "\301\302\303\"\304\305D\"\207" [ebdb-records ebdb-redisplay-records mapcar car toggle-mark mark] 4 (#$ . 51405) nil]) #@45 Remove the mark from RECORDS. (fn RECORDS) (defalias 'ebdb-unmark-all-records #[257 "\300\301\302\"\303\"\207" [ebdb-redisplay-records mapcar car unmark] 5 (#$ . 51617) (byte-code "\301\302\"C\207" [ebdb-records seq-filter #[257 "\3008\207" [3] 3 "\n\n(fn R)"]] 3)]) #@42 Reformat RECORDS in-place. (fn RECORDS) (defalias 'ebdb-reformat-records #[257 "\300\301!\210\302\303\"\210\300\304!\207" [message "Redisplaying record" ebdb-redisplay-records reformat "Redisplaying record... done"] 4 (#$ . 51894) (byte-code "\300 C\207" [ebdb-do-records] 1)]) #@56 Make a copy of the current *EBDB* buffer, renaming it. (defalias 'ebdb-clone-buffer #[0 "\303\304!\305\306\"\205\307\310 \"\311\312\211\313\312\314\315\316\n #!&\207" [major-mode ebdb-records ebdb-buffer-name read-string "New buffer name: " eql ebdb-mode mapcar car ebdb-display-records nil t generate-new-buffer-name format "*%s-%s*"] 13 (#$ . 52180) nil]) #@58 Rename current *EBDB* buffer to NEW-NAME. (fn NEW-NAME) (defalias 'ebdb-rename-buffer #[257 "\302\303\"\205\304\305\306 #\307\"\210\310\307!\207" [major-mode ebdb-buffer-name eql ebdb-mode rename-buffer format "*%s-%s*" t force-mode-line-update] 6 (#$ . 52550) (byte-code "\300\301!C\207" [read-string "New buffer name: "] 2)]) #@47 Reload all records from database DB. (fn DB) (defalias 'ebdb-reload-database #[257 "\300!\301\302\303\304\"\"\305\306\"\210\307\310\"\210\311!\210\307\312\"\210\305\313\"\207" [ebdb-string mapcar ebdb-record-uuid slot-value records message "Reloading %s..." ebdb-redisplay-records unload ebdb-db-reload reformat "Reloading %s... done"] 7 (#$ . 52889) (byte-code "\300\301\302\"C\207" [ebdb-prompt-for-db nil t] 3)]) #@191 Disable database DB. This will unload (and undisplay) all of DB's records. DB will remain disabled until it is manually re-enabled, and then reloaded with `ebdb-reload-database'. (fn DB) (defalias 'ebdb-disable-database #[257 "\300!\203 \301\302\303!\"\207\304\305\306\307\"\"\310\311\"\210\312!\210\301\313\303!\"\207" [ebdb-db-dirty message "Database %s has unsaved changes, you should save it first." ebdb-string seq-filter #[257 "\301\302\"\303!>\204\304\305\306D\"\210\211\307H\262G\310U\207" [cl-struct-ebdb-record-cache-tags slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 1] 6 "\n\n(fn R)"] slot-value records ebdb-redisplay-records remove ebdb-db-disable "Database %s is disabled."] 6 (#$ . 53320) (byte-code "\300 C\207" [ebdb-prompt-for-db] 1)]) #@52 Save databases, kill buffers, and clear variables. (defalias 'ebdb-shutdown #[0 "\300 \210\301 \211\203 \211@r\211q\210\302\303!\203\304 \210)A\266\202\202\210\305 \210\306\307!\207" [ebdb-save buffer-list derived-mode-p ebdb-mode kill-buffer ebdb-clear-vars message "EBDB shutdown complete"] 4 (#$ . 54124) nil]) #@259 Return a regexp matching redundant variants of email address MAIL. For example, "foo@bar.baz.com" is redundant w.r.t. "foo@baz.com". Return nil if MAIL is not a valid plain email address. In particular, ignore addresses "Joe Smith ". (fn MAIL) (defalias 'ebdb-mail-redundant-re #[257 "\300\301\"\211\205\f\302\303\"\205\302\304\"\205$\211\205$\305!\306\305!Q\207" [string-match "\\`\\([^ ]+\\)@\\(.+\\)\\'" match-string 1 2 regexp-quote "@.*\\."] 8 (#$ . 54451)]) #@540 Delete redundant or duplicate mails from RECORDS. For example, "foo@bar.baz.com" is redundant w.r.t. "foo@baz.com". Duplicates may (but should not) occur if we feed EBDB automatically. If QUERY is non-nil (as in interactive calls, unless we use a prefix arg) query before deleting the redundant mail addresses. Noninteractively, this may be used as an element of `ebdb-notice-record-hook' or `ebdb-change-hook'. However, see also `ebdb-ignore-redundant-mails', which is probably more suited for your needs. (fn RECORDS &optional QUERY) (defalias 'ebdb-delete-redundant-mails #[513 "\301!\211\205\331\211@\302\211\211\303!\211\203/\211@\211\235\203#\211B\262\202(\211B\262A\266\202\202\210\304\302\305\306\"\"\307\211A\204F\237\262\202p\310!\262\211\203o\211@\311\312!\"\203c\211B\262\202h\211B\262A\266\202\202L\210)\210\313\314\315GW\203\316\202\200\317\320\312\237\321##\203\320\203\232\322\313\323\"!\203\320\204\244\324\325\"\210\211\203\271\211@\326\327#\210A\266\202\202\245\210\211\203\317\211@\330\327#\210A\266\202\202\273\210\266A\266\202\202\207" [case-fold-search ebdb-record-list nil ebdb-record-mail delq mapcar #[257 "\300\301!!\207" [ebdb-mail-redundant-re ebdb-string] 4 "\n\n(fn M)"] t regexp-opt string-match ebdb-string format "redundant mail%s %s" 1 "s" "" mapconcat ", " y-or-n-p "Delete %s? " message "Deleting %s" ebdb-record-insert-field mail ebdb-record-delete-field] 14 (#$ . 54948) (byte-code "\301 ?D\207" [current-prefix-arg ebdb-do-records] 2)]) #@76 Touch RECORDS by calling `ebdb-change-hook' unconditionally. (fn RECORDS) (defalias 'ebdb-touch-records #[257 "\300!\211\205\211@\211\301\302\303#\266A\266\202\202\207" [ebdb-record-list eieio-oset dirty t] 8 (#$ . 56506) (byte-code "\300 C\207" [ebdb-do-records] 1)]) #@199 Builds a lambda comparison function that takes one argument, RECORD. RECORD is returned if (COMPARE VALUE CMPVAL) is t, where VALUE is the value of field LABEL of RECORD. (fn CMPVAL LABEL COMPARE) (defalias 'ebdb-compare-records '(macro . #[771 "\300\301\302\303\304\305EDC\306\307\303\310\303\fFE\311BBEE\207" [lambda (record) let val ebdb-record-field record if and funcall (record)] 14 (#$ . 56791)])) #@12 (fn A B) (defalias 'ebdb-string> #[514 "\230\206 \231?\207" [] 4 (#$ . 57208)]) (put 'ebdb-string> 'byte-optimizer 'byte-compile-inline-expand) #@153 Display records with timestamp older than DATE. DATE must be in yyyy-mm-dd format. Records are displayed using formatter FMT. (fn DATE &optional FMT) (defalias 'ebdb-timestamp-older #[513 "\300\301\302\303\304\305!\306\"\307\310%\"\207" [ebdb-search-prog make-byte-code 257 "\301\302\"\211\205\303\300\"\205\207" vconcat vector [ebdb-record-field timestamp time-less-p] 5 "\n\n(fn RECORD)"] 9 (#$ . 57366) (byte-code "\303\304!\203 \202\f\nD\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter read-string "Older than date (yyyy-mm-dd): "] 2)]) #@153 Display records with timestamp newer than DATE. DATE must be in yyyy-mm-dd format. Records are displayed using formatter FMT. (fn DATE &optional FMT) (defalias 'ebdb-timestamp-newer #[513 "\300\301\302\303\304\305!\306\"\307\310%\"\207" [ebdb-search-prog make-byte-code 257 "\301\302\"\211\205\211\300\303\"?\266\202\205\207" vconcat vector [ebdb-record-field timestamp time-less-p] 7 "\n\n(fn RECORD)"] 9 (#$ . 57971) (byte-code "\303\304!\203 \202\f\nD\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter read-string "Newer than date (yyyy-mm-dd): "] 2)]) #@157 Display records with creation-date older than DATE. DATE must be in yyyy-mm-dd format. Records are displayed using formatter FMT. (fn DATE &optional FMT) (defalias 'ebdb-creation-older #[513 "\300\301\302\303\304\305!\306\"\307\310%\"\207" [ebdb-search-prog make-byte-code 257 "\301\302\"\211\205\211\300\231\205\207" vconcat vector [ebdb-record-field creation-date] 4 "\n\n(fn RECORD)"] 9 (#$ . 58590) (byte-code "\303\304!\203 \202\f\nD\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter read-string "Older than date (yyyy-mm-dd): "] 2)]) #@157 Display records with creation-date newer than DATE. DATE must be in yyyy-mm-dd format. Records are displayed using formatter FMT. (fn DATE &optional FMT) (defalias 'ebdb-creation-newer #[513 "\300\301\302\303\304\305!\306\"\307\310%\"\207" [ebdb-search-prog make-byte-code 257 "\301\302\"\211\205\211\300\230\206\231?\266\202\205\207" vconcat vector [ebdb-record-field creation-date] 6 "\n\n(fn RECORD)"] 9 (#$ . 59191) (byte-code "\303\304!\203 \202\f\nD\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter read-string "Newer than date (yyyy-mm-dd): "] 2)]) #@128 Display records that have the same timestamp and creation-date. Records are displayed using formatter FMT. (fn &optional FMT) (defalias 'ebdb-creation-no-change #[256 "\300\301\"\207" [ebdb-search-prog #[257 "\300\301\"\211\205\211\300\302\"\232\205\207" [ebdb-record-field creation-date timestamp] 6 "\n\n(fn RECORD)"]] 4 (#$ . 59815) (byte-code "\203 \202 \nC\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter] 1)]) #@365 Run BODY, containing operations on RECORD. This macro checks that the record is editable; ie, that it doesn't belong to a read-only database. It also throws an error and bails out if any of its databases are unsynced. Then it runs `ebdb-change-hook' on the record, executes BODY, runs `ebdb-after-change-hook', and redisplays the record. (fn RECORD &rest BODY) (defalias 'ebdb-with-record-edits '(macro . #[385 "\300\301\302\303\304\305D\306BB\307BB\310\311E\312\310\313\nE\314\315 \316BBE\"BBB\317BBB\207" [condition-case err progn dolist d ebdb-record-databases (nil) ((ebdb-db-editable d)) run-hook-with-args 'ebdb-change-hook append 'ebdb-after-change-hook (dolist (b (buffer-list)) (with-current-buffer b (when (derived-mode-p 'ebdb-mode) (set-buffer-modified-p t)))) ebdb-redisplay-records ('reformat (null (derived-mode-p 'ebdb-mode))) ((ebdb-unsynced-db (let ((db (cadr err))) (ebdb-reload-database db) (message "Database %s is out of sync" db) (sit-for 1))) (ebdb-readonly-db (message "Database %s is read-only" (cadr err)) (sit-for 1)))] 14 (#$ . 60292)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put ebdb-with-record-edits lisp-indent-function 1 put edebug-form-spec (symbolp body)] 5) #@261 Create a new EBDB record. Add record to DB, which defaults to the first database found in `ebdb-db-list', using its default record class, or else RECORD-CLASS. Use `ebdb-create-record-extended' to be prompted for these values. (fn DB &optional RECORD-CLASS) (defalias 'ebdb-create-record #[513 "\211\204\n\301\302\"\262\3031k\3041b\305\306\305\307#\210\310!\262\311\"\210\312\313\"\210\312\314\"\210\315!\210\312\316\"\210\317C\307#\210\320 \211\205[\211@r\211q\210\321\322!\203S\323\307!\210)A\266\202\202?\262\26200\2070\210\324\325\326!\"\207\210\324\327\326!\"\207" [ebdb-default-multiline-formatter slot-value record-class (ebdb-unsynced-db) (ebdb-readonly-db) nil ebdb-db-editable t ebdb-read ebdb-db-add-record run-hook-with-args ebdb-create-hook ebdb-change-hook ebdb-init-record ebdb-after-change-hook ebdb-display-records buffer-list derived-mode-p ebdb-mode set-buffer-modified-p message "%s is read-only" ebdb-string "%s is out of sync"] 7 (#$ . 61529) (byte-code "@C\207" [ebdb-db-list] 1)]) #@59 Create a record, prompting for database and record class. (defalias 'ebdb-create-record-extended #[0 "\300\301\302\"\303\304\305\301\302$\306\"\207" [ebdb-prompt-for-db nil t eieio-read-subclass "Use which record class? " ebdb-record ebdb-create-record] 6 (#$ . 62567) nil]) #@218 Convenience function for creating a record and role at once. If called on an organization record, create a new person record and give them a role at the organization. If called on a person, do the reverse. (fn REC) (defalias 'ebdb-create-record-and-role #[257 "\301\302\"\205\303\304\305\"\306!>\204\307\310\311D\"\210\211\312H\262@\313\211\314\203-\315\202.\302\"\210\316 \262\317\320\321\322\203B\202C!\323\322 \203P\202R\n!F\"\262\3241\3251\356\304\203h\202i\305\"\306!>\204z\307\310\311D\"\210\211\312H\262\211\203\220\211@\326!\210A\266\202\202\210\327\330\203\234\202\235\"\210\331\203\250\202\251\"\210\327\332\203\267\202\270\"\210\333 \211\203\330\211@r\211q\210\334\335!\203\320\336\303!\210)A\266\202\202\274\210\337\203\342\202\343\340\334\335!?#00\2020\211A@\341!\210\342\343\"\210\344\345!\262\262\202\342\346A@\"\210\344\345!\262\207" [cl-struct-ebdb-record-cache-tags object-of-class-p ebdb-record-person t slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 nil ebdb-create-record ebdb-record-organization ebdb-current-record ebdb-read ebdb-field-role :record-uuid ebdb-record-uuid :org-uuid (ebdb-readonly-db) (ebdb-unsynced-db) ebdb-db-editable run-hook-with-args ebdb-change-hook ebdb-com-insert-field ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p ebdb-redisplay-records reformat ebdb-reload-database message "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 12 (#$ . 62851) (byte-code "\300 C\207" [ebdb-current-record] 1)]) #@221 Prompt to create a field and insert it into RECORDS. If multiple records are marked, insert instances of the same field class into each record, first asking whether each field instance should be identical. (fn RECORDS) (defalias 'ebdb-insert-field #[257 "\301\302\303\304@!!B!\211@A\211@\211@AA\305\232\205#\306D G\307U\2041\310\311!\2055\312\"\f\211\205\342\211@\3131\316\3141\267\315\316\"\317!>\204X\320\321\322D\"\210\211\323H\262\211\203n\211@\324!\210A\266\202\202]\210\325\326\"\210\327\203\200\330!\202\202#\210\325\331\"\210\332 \211\203\251\211@r\211q\210\333\334!\203\241\335\336!\210)A\266\202\202\215\210\337\340\333\334!?#00\202\3320\211A@\341!\210\342\343\"\210\344\307!\262\262\202\332\342\345A@\"\210\344\307!\262\210A\266\202\2027\262\266\202\266\203\207" [cl-struct-ebdb-record-cache-tags ebdb-prompt-for-field-type (organizations . ebdb-field-role) ebdb-record-field-slot-query eieio-object-class ebdb-field-user-simple :label 1 y-or-n-p "Insert same field values in all records? " ebdb-read (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook ebdb-com-insert-field clone ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p t ebdb-redisplay-records reformat ebdb-reload-database message "Database %s is out of sync" sit-for "Database %s is read-only"] 20 (#$ . 64463) (byte-code "\300 C\207" [ebdb-do-records] 1)]) (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\315\316\304\317%\210\306\301\320\321\304\322%\207" [defalias ebdb-com-insert-field cl-generic-define (record field &optional slots) nil "Insert FIELD into RECORD.\nFor use between the `ebdb-insert-field' command, which is called\nfrom an *EBDB* buffer and may operate on many records, and the\nlower-level per-record `ebdb-record-insert-field' method.\n\nSLOTS, if present, is passed to any subsequent call to\n`ebdb-read'.\n\n(fn RECORD FIELD &optional SLOTS)" cl-generic-define-method ((rec ebdb-record) (field ebdb-field) &optional _slots) #[770 "\3001 \3011\302\"00\2070\303\304\305!\305!#\210\306\307!\207\303\310@A#\210\306\307!\207" [(error) (ebdb-unacceptable-field) ebdb-record-insert-field message "Record %s cannot accept field %s" ebdb-string sit-for 1 "Error inserting field: %s, %s"] 9 "\n\n(fn REC FIELD &optional SLOTS)"] ((rec ebdb-record) (field-class (subclass ebdb-field)) &optional slots) #[770 "\300\"\301\"\207" [ebdb-read ebdb-com-insert-field] 7 "\n\n(fn REC FIELD-CLASS &optional SLOTS)"] ((org ebdb-record-organization) (role-class (subclass ebdb-field-role)) &optional slots) #[770 "\300 \301\302\303\304 \305\"#\"\306\"\207" [ebdb-prompt-for-record ebdb-read plist-put :org-uuid slot-value uuid ebdb-com-insert-field] 12 "\n\n(fn ORG ROLE-CLASS &optional SLOTS)"] (:after) ((record ebdb-record-person) (field ebdb-field-role) &optional _slots) #[770 "\300\301\302\"\303\"\211\205\304\305#\207" [ebdb-gethash slot-value org-uuid uuid ebdb-record-adopt-role-fields t] 8 "\n\n(fn RECORD FIELD &optional SLOTS)"] (:after) ((org ebdb-record-organization) (_field ebdb-field-domain) &optional _slot) #[770 "\301\302!\"\303\211\205%\211@\304\305\306\"\307\"\262\310\311#\210A\266\202\202\262\207" [ebdb-org-hashtable gethash ebdb-record-uuid nil ebdb-gethash slot-value record-uuid uuid ebdb-record-adopt-role-fields t] 11 "\n\n(fn ORG FIELD &optional SLOT)"]] 6) #@130 Edit RECORD's FIELD under point. If point is on the name header of the record, change the name of the record. (fn RECORD FIELD) (defalias 'ebdb-edit-field #[514 "\301`\302\"\3031\255\3041\226\305\306\"\307!>\204\310\311\312D\"\210\211\313H\262\211\2035\211@\314!\210A\266\202\202$\210\315\316\"\210\211\203S\305\317\"\320\321!\322#\323\"\266\202e\324!\203a\325\"\210\202e\326\327!\210\315\330\"\210\331 \211\203\210\211@r\211q\210\332\333!\203\200\334\335!\210)A\266\202\202l\210\336\337\332\333!?#00\202\2710\211A@\340!\210\326\341\"\210\342\343!\262\262\202\271\326\344A@\"\210\342\343!\262\207" [cl-struct-ebdb-record-cache-tags get-text-property ebdb-record (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook name ebdb-read eieio-object-class nil ebdb-record-change-name eieio-object-p ebdb-com-edit-field message "Point not in field" ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p t ebdb-redisplay-records reformat ebdb-reload-database "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 8 (#$ . 68070) (byte-code "\300 \301 D\207" [ebdb-current-record ebdb-current-field] 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\314\315%\207" [defalias ebdb-com-edit-field cl-generic-define (record field) nil "Edit field FIELD of RECORD.\nFor use between the `ebdb-edit-field' and `ebdb-edit-foo'\ncommands, called from an *EBDB* buffer, and the lower-level\n`ebdb-record-change-field' method.\n\n(fn RECORD FIELD)" cl-generic-define-method ((rec ebdb-record) (field ebdb-field)) #[514 "\300\"\207" [ebdb-record-change-field] 5 "\n\n(fn REC FIELD)"] ((_rec ebdb-record-organization) (field ebdb-field-role)) #[514 "\300\301\302\"\303\"\304\"\207" [ebdb-gethash slot-value record-uuid uuid ebdb-record-change-field] 6 "\n\n(fn REC FIELD)"] ((record ebdb-record-person) (field ebdb-field-relation)) t #[771 "\300\301\"\302!\232\203\303\304\"\"\207 \207" [slot-value rel-uuid ebdb-record-uuid ebdb-record-change-field ebdb-record-related] 7 "\n\n(fn CL--CNM RECORD FIELD)"]] 6) #@73 Use the customize interface to edit FIELD of RECORD. (fn RECORD FIELD) (defalias 'ebdb-edit-field-customize #[514 "\302!\303!\210\304!\203\305!\203\306\307\310\"\311\"\262\211\207" [ebdb-customization-field ebdb-customization-record clone eieio-customize-object ebdb-record-organization-p ebdb-field-role-p ebdb-gethash slot-value record-uuid uuid] 7 (#$ . 70344) (byte-code "\300 \301 D\207" [ebdb-current-record ebdb-current-field] 2)]) (byte-code "\300\301\302\303\302\304%\210\300\301\305\306\307\310%\210\300\301\311\312\307\313%\207" [cl-generic-define-method eieio-done-customizing nil ((new-field ebdb-field)) #[257 " \205\211\205\302#\207" [ebdb-customization-record ebdb-customization-field ebdb-record-change-field] 7 "Do the actual insertion of the newly-customized field.\n\n(fn NEW-FIELD)"] (:around) ((_field ebdb-field)) t #[514 "\211\205\223\3021\207\3031p\304\305\"\306! >\204 \307\310\311D\"\210\211\312H\262\211\2036\211@\313!\210A\266\202\202%\210\314\315\"\210 \210\314\316\"\210\317 \211\203b\211@r\211q\210\320\321!\203Z\322\323!\210)A\266\202\202F\210\324\325\320\321!?#00\202\2230\211A@\326!\210\327\330\"\210\331\332!\262\262\202\223\327\333A@\"\210\331\332!\262\207" [ebdb-customization-record cl-struct-ebdb-record-cache-tags (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p t ebdb-redisplay-records reformat ebdb-reload-database message "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 8 "Check that the record owning FIELD can be edited.\nAlso redisplay the record after customization.\n\n(fn CL--CNM FIELD)"] (:around) ((mail ebdb-field-mail)) #[514 "\301\302\303\304\305\306!\307\"\310\311%\312\313\"\"\205\314\315\"\316\317\"\320=\211\203G\203G\211\203C\211@\321\322\323\324##\210A\266\202\202+\210\202a\211\204a\204a\242\203a\321@\322@\323\320##\210 \207" [ebdb-customization-record seq-remove make-byte-code 257 "\301\300!\301!\230\207" vconcat vector [ebdb-string] 4 "\n\n(fn M)" ebdb-record-mail t seq-filter #[257 "\300\301\"\302=\207" [slot-value priority primary] 4 "\n\n(fn M)"] slot-value priority primary ebdb-record-change-field clone :priority normal] 15 "Handle mail priority after customizing.\nCheck that some mail is marked as primary after MAIL is edited.\n\n(fn CL--CNM MAIL)"]] 6) #@211 For RECORD edit some FIELD (mostly interactively). Interactively, if called without a prefix, edit the notes field of RECORD. When called with a prefix, prompt the user for a field to edit. (fn RECORD FIELD) (defalias 'ebdb-edit-foo #[514 "\3021\212\3031w\304\305\"\306!>\204\307\310\311D\"\210\211\312H\262\211\2031\211@\313!\210A\266\202\202 \210\314\315\"\210\211\203C\316\"\210\202H\317 \"\210\314\320\"\210\321 \211\203k\211@r\211q\210\322\323!\203c\324\325!\210)A\266\202\202O\210\326\327\322\323!?#00\2070\211A@\330!\210\331\332\"\210\333\334!\262\207\331\335A@\"\210\333\334!\207" [cl-struct-ebdb-record-cache-tags ebdb-default-notes-class (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook ebdb-com-edit-field ebdb-com-insert-field ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p t ebdb-redisplay-records reformat ebdb-reload-database message "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 7 (#$ . 72885) (byte-code "\301 \302\211\203-\303\304\305\306\307\310!\311\"\312\313%\314\315\316!\"\"\262\317\320\321\"\"A\262\2023\322\323\"\262D\207" [current-prefix-arg ebdb-current-record nil mapcar make-byte-code 257 "\211A\302\303 \304\300$\305\306 \304\300$Q!AB\207" vconcat vector [ebdb-default-oneline-formatter substring-no-properties ebdb-fmt-field-label oneline ": " ebdb-fmt-field] 10 "\n\n(fn F)" assq-delete-all name ebdb-record-current-fields assoc completing-read "Field: " ebdb-record-field notes] 10)]) #@119 For LIST transpose elements I and J destructively. I and J start with zero. Return the modified LIST. (fn LIST I J) (defalias 'ebdb-list-transpose #[771 "=\203\207\300\211\211V\203\262\262\262\233\262Z\233\262@\262\2047\301\302#\210@\240\210\240\210\207" [nil error "Args %i, %i beyond length of list"] 10 (#$ . 74529)]) #@332 For RECORDS delete FIELD. If point is on the record header (within the name), offer to delete all RECORDS from the database. If prefix NOPROMPT is non-nil, do not confirm deletion. If point is on a field, offer to delete that field. Field deletion only operates on the record under point. (fn RECORDS FIELD &optional NOPROMPT) (defalias 'ebdb-delete-field-or-record #[770 "\301!\262\302`\303\"\203\304\"\207\305 \3061\230\3071\201\310\311\"\312!>\204.\313\314\315D\"\210\211\316H\262\211\203D\211@\317!\210A\266\202\2023\210\320\321\"\210\322#\210\320\323\"\210\324 \211\203s\211@r\211q\210\325\326!\203k\327\330!\210)A\266\202\202W\210\331\332\325\326!?#00\202\2440\211A@\333!\210\334\335\"\210\336\337!\262\262\202\244\334\340A@\"\210\336\337!\262\207" [cl-struct-ebdb-record-cache-tags ebdb-record-list get-text-property ebdb-record ebdb-delete-records ebdb-current-record (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook ebdb-com-delete-field ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p t ebdb-redisplay-records reformat ebdb-reload-database message "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 9 (#$ . 74895) (byte-code "\301 \302 E\207" [current-prefix-arg ebdb-do-records ebdb-current-field] 3)]) (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\314\315%\210\306\301\316\317\304\320%\207" [defalias ebdb-com-delete-field cl-generic-define (record field noprompt) nil "Delete FIELD of RECORD.\nFor use between the command `ebdb-delete-field-or-record', called\nfrom an *EBDB* buffer, and the lower-level\n`ebdb-record-delete-field'. When NOPROMPT is non-nil, don't\nconfirm before deleting the field.\n\n(fn RECORD FIELD NOPROMPT)" cl-generic-define-method ((record ebdb-record) (field ebdb-field) noprompt) #[771 "\211\204\300\301\302\303!\304\305!\306\"@\305!$!\205\307\"\207" [y-or-n-p format "Delete \"%s\" %s (of %s)? " ebdb-field-readable-name split-string ebdb-string "\n" ebdb-record-delete-field] 10 "\n\n(fn RECORD FIELD NOPROMPT)"] ((_record ebdb-record-organization) (field ebdb-field-role) noprompt) #[771 "\300\301\302\"\303\"\304#\207" [ebdb-gethash slot-value record-uuid uuid ebdb-com-delete-field] 8 "\n\n(fn RECORD FIELD NOPROMPT)"] ((record ebdb-record-person) (field ebdb-field-relation) noprompt) t #[1028 "\300\301\"\302!\232\203\303\304\"#\207 \207" [slot-value rel-uuid ebdb-record-uuid ebdb-com-delete-field ebdb-record-related] 8 "\n\n(fn CL--CNM RECORD FIELD NOPROMPT)"] (:after) ((record ebdb-record-entity) (mail ebdb-field-mail) _noprompt) #[771 "\300\301\302\303\304\305!\306\"\307\310%\311\312\"\"\313\314\315#?\205'\211@\205'\316@\317\314#\211\2051\320@#\207" [seq-remove make-byte-code 257 "\301!\301\300!\230\207" vconcat vector [ebdb-string] 4 "\n\n(fn M)" ebdb-record-mail t object-assoc primary priority clone :priority ebdb-record-change-field] 10 "Possibly alter the priority of RECORD's remaining mails.\nIf there aren't any other primary mails, make the first of the\nremaining mails primary.\n\n(fn RECORD MAIL NOPROMPT)"]] 6) #@106 Delete RECORDS. If prefix NOPROMPT is non-nil, do not confirm deletion. (fn RECORDS &optional NOPROMPT) (defalias 'ebdb-delete-records #[513 "\301!\211\205\265\211@\3021\241\3031\212\304\305\"\306!>\204$\307\310\311D\"\210\211\312H\262\211\203:\211@\313!\210A\266\202\202)\210\314\315\"\210\204O\316\317\320\321!\"!\203Y\322!\210\323\324\325#\210\314\326\"\210\327 \211\203|\211@r\211q\210\330\331!\203t\332\325!\210)A\266\202\202`\210\323\333\330\331!?#00\202\2550\211A@\334!\210\335\336\"\210\337\340!\262\262\202\255\335\341A@\"\210\337\340!\262\210A\266\202\202\207" [cl-struct-ebdb-record-cache-tags ebdb-record-list (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook y-or-n-p format "Delete the EBDB record of %s? " ebdb-string ebdb-delete-record ebdb-redisplay-records remove t ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p reformat ebdb-reload-database message "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 9 (#$ . 78203) (byte-code "\301 D\207" [current-prefix-arg ebdb-do-records] 2)]) #@105 Move all RECORDS to database DB. This removes the records from their current database. (fn RECORDS DB) (defalias 'ebdb-move-records #[514 "\211\205\237\211@\3011\213\3021t\303\304\"\305!>\204\"\306\307\310D\"\210\211\311H\262\211\2038\211@\312!\210A\266\202\202'\210\313\314\"\210\315\"\210\313\316\"\210\317 \211\203f\211@r\211q\210\320\321!\203^\322\323!\210)A\266\202\202J\210\324\325\320\321!?#00\202\2270\211A@\326!\210\327\330\"\210\331\332!\262\262\202\227\327\333A@\"\210\331\332!\262\210A\266\202\202\207" [cl-struct-ebdb-record-cache-tags (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook ebdb-move-record ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p t ebdb-redisplay-records reformat ebdb-reload-database message "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 9 (#$ . 79415) (byte-code "\300 \301 D\207" [ebdb-do-records ebdb-prompt-for-db] 2)]) #@101 Copy RECORDS to database DB. The records also remain in their present database(s). (fn RECORDS DB) (defalias 'ebdb-copy-records #[514 "\211\205\237\211@\3011\213\3021t\303\304\"\305!>\204\"\306\307\310D\"\210\211\311H\262\211\2038\211@\312!\210A\266\202\202'\210\313\314\"\210\315\"\210\313\316\"\210\317 \211\203f\211@r\211q\210\320\321!\203^\322\323!\210)A\266\202\202J\210\324\325\320\321!?#00\202\2270\211A@\326!\210\327\330\"\210\331\332!\262\262\202\227\327\333A@\"\210\331\332!\262\210A\266\202\202\207" [cl-struct-ebdb-record-cache-tags (ebdb-readonly-db) (ebdb-unsynced-db) slot-value cache type-of signal wrong-type-argument ebdb-record-cache 7 ebdb-db-editable run-hook-with-args ebdb-change-hook ebdb-copy-record ebdb-after-change-hook buffer-list derived-mode-p ebdb-mode set-buffer-modified-p t ebdb-redisplay-records reformat ebdb-reload-database message "Database %s is out of sync" sit-for 1 "Database %s is read-only"] 9 (#$ . 80484) (byte-code "\300 \301 D\207" [ebdb-do-records ebdb-prompt-for-db] 2)]) #@186 Show all records. If invoked in a *EBDB* buffer point stays on the currently visible record. Inverse of `ebdb-display-current-record'. Display using formatter FMT. (fn &optional FMT) (defalias 'ebdb-display-all-records #[256 "\3031\n\304 0\202\f\210\305\306\305\211\204\307 \210\2031\310\311\312\313\314\315\"\316\"\317\320% \"\266\202\2024 \266\202\"\210\211\n\236\211\262\205G\321 \210\3228b\207" [ebdb-db-list ebdb-record-tracker ebdb-records (error) ebdb-current-record nil ebdb-display-records 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)" redisplay 2] 13 (#$ . 81549) (byte-code "\203 \202 \nC\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter] 1)]) #@123 Narrow to current record. Inverse of `ebdb-display-all-records'. Display record using formatter FMT. (fn &optional FMT) (defalias 'ebdb-display-current-record #[256 "\300\301 C\"\207" [ebdb-display-records ebdb-current-record] 4 (#$ . 82373) (byte-code "\203 \202 \nC\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter] 1)]) #@182 Toggle fmt of RECORDS (elided or expanded). With prefix ARG 0, RECORDS are displayed elided. With any other non-nil ARG, RECORDS are displayed expanded. (fn RECORDS &optional ARG) (defalias 'ebdb-toggle-records-format #[513 "\302\303!A@\304\305!\306=\203\2026\203>\204 \2026\307\"T\211GU\2031@\2024\2118\262\310\311\312!\"\210\313\314\315\"\"\207" [ebdb-default-oneline-formatter ebdb-default-multiline-formatter ebdb-current-record t ebdb-available-ebdb-formatters full-okay 0 cl-position message "Using %S layout" ebdb-string ebdb-redisplay-records mapcar car] 9 (#$ . 82750) (byte-code "\301\302!D\207" [current-prefix-arg ebdb-do-records t] 2)]) #@46 Display all fields of RECORDS. (fn RECORDS) (defalias 'ebdb-display-records-completely #[257 "\301\"\207" [ebdb-full-formatter ebdb-redisplay-records] 4 (#$ . 83433) (byte-code "\300 C\207" [ebdb-do-records] 1)]) #@142 Call `ebdb-toggle-records-format' on all displayed records. See that function's docstring for use of the prefix arg ARG. (fn &optional ARG) (defalias 'ebdb-toggle-all-records-format #[256 "\205\301\"\207" [ebdb-records ebdb-toggle-records-format] 4 (#$ . 83656) "p"]) #@46 Display RECORDS using FMT. (fn RECORDS FMT) (defalias 'ebdb-display-records-with-fmt #[514 "\300\"\207" [ebdb-redisplay-records] 5 (#$ . 83936) (byte-code "\300\301!\302\303\304\305\306\307 \"\"\305\310\307 \"\"AD\207" [ebdb-do-records t assoc-string completing-read "Format: " mapcar ebdb-string ebdb-available-ebdb-formatters #[257 "\300!B\207" [ebdb-string] 3 "\n\n(fn S)"]] 7)]) #@150 Remove RECORDS from the display without deleting them from EBDB. With prefix N, omit the next N records. If negative, omit backwards. (fn RECORDS) (defalias 'ebdb-omit-records #[257 "\300\301\"\207" [ebdb-redisplay-records remove] 4 (#$ . 84331) (byte-code "\300 C\207" [ebdb-do-records] 1)]) #@48 Open a buffer in `ebdb-mode'; do nothing else. (defalias 'ebdb-open #[0 "\204\301 \210\302\303!\207" [ebdb-db-list ebdb-load ebdb-display-records nil] 2 (#$ . 84633) nil]) #@168 Interactive form used for setting up search style. "Style" means whether to append/filter/display the search results -- it does this by checking `this-command-keys'. (defalias 'ebdb-search-style #[0 "\300 \301\302\"\262@\303\304\"\203\305\202 \303\306\"\203\301\202 \307\207" [this-command-keys append nil eql 124 filter 43 display] 4 (#$ . 84815)]) (put 'ebdb-search-style 'byte-optimizer 'byte-compile-inline-expand) #@380 Common routine for interactive searches in the *EBDB* buffer. STYLE indicates whether the results are being displayed straight, appended to existing records, or filtered from existing records. CLAUSES is a list of search clauses, each one holding a field class to search on, and a search criterion to use. FMT is the optional formatter to use. (fn STYLE CLAUSES &optional FMT) (defalias 'ebdb-search-display #[770 "\304\305\"\306\307\"\203\211\2026\310\211 \204\311 \210\2033\312\313\314\315\316\317\"\320\"\321\322%\n\"\266\202\2026\n\266\202\323 \324#\211\203Z\203M\304\325\" B\326\306\n\327\"#\202o\n\204l\326\310\"\210\330\331\332!!\202o\330\333!\207" [ebdb-records ebdb-db-list ebdb-record-tracker ebdb-search-history mapcar car eql filter 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-invert-p ebdb-search ebdb-record-uuid ebdb-display-records append message substitute-command-keys "Database is empty, use\\ \\[ebdb-create-record] to create records" "No matching records"] 14 (#$ . 85252)]) #@190 Display all records in the EBDB matching REGEXP. Search all fields, and display using formatter FMT, using style STYLE: meaning display, append, or filter. (fn STYLE REGEXP &optional FMT) (defalias 'ebdb #[770 "\300\301D\302D\303D\304D\305D\306 D\307\nD\257#\207" [ebdb-search-display ebdb-field-name organization ebdb-field-mail ebdb-field-notes ebdb-field-user ebdb-field-phone ebdb-field-address] 13 (#$ . 86422) (byte-code "\303 \304\305\"\262@\306\307\"\203\310\202 \306\311\"\203\304\202 \312\262\313\314!\203- \202.\nE\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read all] 4)]) #@138 Display all records in the EBDB with name matching REGEXP. Searches the main name, and alternate names. (fn STYLE REGEXP &optional FMT) (defalias 'ebdb-search-name #[770 "\300\301DC#\207" [ebdb-search-display ebdb-field-name] 7 (#$ . 87154) (byte-code "\303 \304\305\"\262@\306\307\"\203\310\202 \306\311\"\203\304\202 \312\262\313\314!\203- \202.\nE\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read "names"] 4)]) #@109 Display all records in the EBDB matching REGEXP in the organization field. (fn STYLE REGEXP &optional FMT) (defalias 'ebdb-search-organization #[770 "\300\301DC#\207" [ebdb-search-display organization] 7 (#$ . 87705) (byte-code "\303 \304\305\"\262@\306\307\"\203\310\202 \306\311\"\203\304\202 \312\262\313\314!\203- \202.\nE\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read "organization"] 4)]) #@105 Display all records in the EBDB matching REGEXP in the address fields. (fn STYLE REGEXP &optional FMT) (defalias 'ebdb-search-address #[770 "\301DC#\207" [ebdb-default-address-class ebdb-search-display] 7 (#$ . 88239) (byte-code "\304 \305\306\"\262@\307\310\"\203\311\202 \307\312\"\203\305\202 \313\262\314! \203-\n\202. E\207" [ebdb-default-address-class current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read] 4)]) #@103 Display all records in the EBDB matching REGEXP in the mail address. (fn STYLE REGEXP &optional FMT) (defalias 'ebdb-search-mail #[770 "\301DC#\207" [ebdb-default-mail-class ebdb-search-display] 7 (#$ . 88784) (byte-code "\304 \305\306\"\262@\307\310\"\203\311\202 \307\312\"\203\305\202 \313\262\314! \203-\n\202. E\207" [ebdb-default-mail-class current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read] 4)]) #@103 Display all records in the EBDB matching REGEXP in the phones field. (fn STYLE REGEXP &optional FMT) (defalias 'ebdb-search-phone #[770 "\301DC#\207" [ebdb-default-phone-class ebdb-search-display] 7 (#$ . 89318) (byte-code "\304 \305\306\"\262@\307\310\"\203\311\202 \307\312\"\203\305\202 \313\262\314! \203-\n\202. E\207" [ebdb-default-phone-class current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read] 4)]) #@103 Display all records in the EBDB matching REGEXP in the phones field. (fn STYLE REGEXP &optional FMT) (defalias 'ebdb-search-notes #[770 "\301DC#\207" [ebdb-default-notes-class ebdb-search-display] 7 (#$ . 89855) (byte-code "\304 \305\306\"\262@\307\310\"\203\311\202 \307\312\"\203\305\202 \313\262\314! \203-\n\202. E\207" [ebdb-default-notes-class current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read] 4)]) #@114 Display all EBDB records for which user field FIELD matches CRITERION. (fn STYLE FIELD CRITERION &optional FMT) (defalias 'ebdb-search-user-fields #[1027 "\300DC#\207" [ebdb-search-display] 8 (#$ . 90392) (byte-code "\304 \305\306\"\262@\307\310\"\203\311\202 \307\312\"\203\305\202 \313\262\305\314\315\316\317\320\321\322\"\"\"\314\323\"\"\324\325\326\306\322$\"\327\204D\330\202V\307A\331\"\203T\332\333@\"\202VA!\243\206^\321\334\243\331\"\203m@B\202n \203v\n\202w F\207" [ebdb-user-label-list current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display mapcar #[257 "\300\301@!!\301@!B\207" [ebdb-field-readable-name intern] 4 "\n\n(fn F)"] cl-remove-if #[257 "\211@\300\230\207" ["ebdb-field-user-simple"] 3 "\n\n(fn F)"] eieio-build-class-alist ebdb-field-user t #[257 "\211\300B\207" [ebdb-field-user-simple] 3 "\n\n(fn L)"] assoc completing-read "Field to search (RET for all): " ebdb-search-read "any user field" ebdb-field-user-simple format "%s field" child-of-class-p] 9)]) #@71 Display records with unsaved modifications. (fn STYLE &optional FMT) (defalias 'ebdb-search-modified #[513 "\300\301#\207" [ebdb-search-display ((dirty t))] 6 (#$ . 91503) (byte-code "\303 \304\305\"\262@\306\307\"\203\310\202 \306\311\"\203\304\202 \312\262\203* \202+\nD\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display] 4)]) #@61 Run a search of record TAGS. (fn STYLE TAGS &optional FMT) (defalias 'ebdb-search-tags #[770 "\300\301DC#\207" [ebdb-search-display ebdb-field-tags] 7 (#$ . 91949) (byte-code "\303 \304\305\"\262@\306\307\"\203\310\202 \306\311\"\203\304\202 \312\262\313\314!\203- \202.\nE\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-search-read ebdb-field-tags] 4)]) #@298 Search all records that have duplicate entries for FIELDS. The list FIELDS may contain the symbols `name', `mail', and `aka'. If FIELDS is nil use all these fields. With prefix, query for FIELDS. The search results are displayed in the EBDB buffer using formatter FMT. (fn &optional FIELDS FMT) (defalias 'ebdb-search-duplicates #[512 "\206\303\262\304\211\211\211\204\305 \210\203-\306\307\310\311\312\313\"\314\"\315\316% \"\266\202\2020 \266\202\211\203j\211@\317>\203\246\320\321\"\322!\n>\204P\323\324\325D\"\210\211\326H\262\203\246\327\320\321\"\322!\n>\204l\323\324\325D\"\210\211\326H\262\330\"\211\262\203\246G\326V\203\246\331\"\262\332\333\320\321\"\322!\n>\204\233\323\324\325D\"\210\211\326H\262\"\210\334\335!\210\336>\203 \320\321\"\322!\n>\204\300\323\324\325D\"\210\211\337H\262\211\203\211@\327\340\"\262G\326V\203\331\"\262\332\341\320\321\"\322!\n>\204\365\323\324\325D\"\210\211\326H\262#\210\334\335!\210A\266\202\202\305\210\342>\203c\343\342\"\203c\344!\211\203b\211@\345!\262\327\346\"\262G\326V\203[\331\"\262\332\347\320\321\"\322!\n>\204O\323\324\325D\"\210\211\326H\262#\210\334\335!\210A\266\202\202\210A\266\202\2020\210\350\351\352!\353\"\"\207" [ebdb-db-list ebdb-record-tracker cl-struct-ebdb-record-cache-tags (name mail aka) 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)" name slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1 ebdb-gethash (fl-name lf-name aka) append message "EBDB record `%s' has duplicate name." sit-for 0 mail 5 (mail) "EBDB record `%s' has duplicate mail `%s'." aka slot-exists-p ebdb-record-aka ebdb-string (name alt-names) "EBDB record `%s' has duplicate aka `%s'" ebdb-display-records sort delete-dups ebdb-record-lessp] 15 (#$ . 92431) (byte-code "\205 \303\304\305\306\307\310$!C\203 \202\nD\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter intern completing-read "Field: " ("name" "mail" "aka") nil t] 6)]) #@92 Select a database DB and show all records from that database. (fn STYLE DB &optional FMT) (defalias 'ebdb-search-database #[770 "\300\301DC#\207" [ebdb-search-display database] 7 (#$ . 94583) (byte-code "\303 \304\305\"\262@\306\307\"\203\310\202 \306\311\"\203\304\202 \312\262\313 \203, \202-\nE\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display ebdb-prompt-for-db] 4)]) #@98 Prompt for a record CLASS and display all records of that class. (fn STYLE CLASS &optional FMT) (defalias 'ebdb-search-record-class #[770 "\300\301DC#\207" [ebdb-search-display record-class] 7 (#$ . 95074) (byte-code "\303 \304\305\"\262@\306\307\"\203\310\202 \306\311\"\203\304\202 \312\262\313\314\315\305\316$\2030 \2021\nE\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter this-command-keys append nil eql 124 filter 43 display eieio-read-subclass "Use which record class? " ebdb-record t] 6)]) #@72 Prompt for a single RECORD, and display it. (fn RECORD &optional FMT) (defalias 'ebdb-search-single-record #[513 "\300C\"\207" [ebdb-display-records] 5 (#$ . 95637) (byte-code "\303\304!\203 \202\f\nD\207" [current-prefix-arg ebdb-default-oneline-formatter ebdb-default-multiline-formatter ebdb-completing-read-record "Display record: "] 2)]) #@174 Search records using FUNCTION. FUNCTION is called with one argument, the record, and should return the record to be displayed or nil otherwise. (fn FUNCTION &optional FMT) (defalias 'ebdb-search-prog #[513 "\302\303\304\211\204\f\305 \210\203'\303\306\307\310\311\312\"\313\"\314\315% \"\266\202\202* \266\202\"\"\207" [ebdb-db-list ebdb-record-tracker ebdb-display-records seq-filter nil ebdb-load 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)"] 15 (#$ . 95994)]) #@45 Pop to the last set of EBDB search results. (defalias 'ebdb-search-pop #[0 "\203\301\302\303\211A\242\"!\207\304\305!\207" [ebdb-search-history ebdb-display-records mapcar #[257 "\300\301\"\207" [ebdb-gethash uuid] 4 "\n\n(fn R)"] message "No further search history in this buffer."] 5 (#$ . 96555) nil]) #@344 Compose a mail message to RECORDS (optional: using SUBJECT). If ARG (interactively, the prefix arg) is nil, use the primary mail address of each record. If it is t, prompt the user for which address to use. \Another approach is to put point on a mail field and press \[ebdb-record-action]. (fn RECORDS &optional SUBJECT ARG) (defalias 'ebdb-mail #[769 "\300!\262G\301U\203 \302@\"\211\204\303\304!\210\305@#\207\306\307\310\311\312\313!\314\"\315\316%\317#\211\320\230?\205<\321\"\207" [ebdb-record-list 1 ebdb-record-one-mail error "Record has no mail address" ebdb-field-mail-compose mapconcat make-byte-code 257 "\301\302\300\"\"\207" vconcat vector [ebdb-dwim-mail ebdb-record-one-mail] 6 "\n\n(fn R)" ", " "" ebdb-compose-mail] 10 (#$ . 96873) (byte-code "\301 \302E\207" [current-prefix-arg ebdb-do-records nil] 3)]) #@616 Compose a separate email to each of the records in RECORDS. RECORDS is either the marked records in an *EBDB* buffer, or (if no records are marked) all the records in the buffer. If PROMPT is non-nil, prompt the user to choose a mail address to use for each record that has more than one. SUBJECT is the subject to use for each message. CC is a list of address strings to put in the Cc field of each message. BCC likewise, for the Bcc field. BODY-REGISTER, if given, is a character indicating a register holding text to be inserted as the body of each message. (fn RECORDS PROMPT SUBJECT CC BCC BODY-REGISTER) (defalias 'ebdb-mail-each #[1542 "\205 \300\301\302#\205\300\301\302#\303!\211;\205\211\262\304\203)\305BB\262\2034\306BB\262 \211\205]\211@\307\310\"\f$\210\203V\311 \210\212\312!\210)A\266\202\2026\262\207" [mapconcat identity ", " get-register nil "Cc" "Bcc" ebdb-field-mail-compose ebdb-record-one-mail message-goto-body insert-for-yank] 17 (#$ . 97741) (byte-code "\302\303\"\206 \304\305\" \3061\307\310!0\202\210\311\311\31227\31310\314\315\311\211\316#!B\262\202\"\210\317\312\237\"0\262\311\3122W\3131P\314\315\311\211\320#!B\262\202B\210\317\312\237\"0\262\3061d\321\322!0\202f\210\311\257\207" [ebdb-records current-prefix-arg seq-filter #[257 "\3008\207" [3] 3 "\n\n(fn R)"] mapcar car (quit ebdb-empty) ebdb-read-string "Subject header (C-g to skip)" nil --ebdb-loop-exit-- (quit ebdb-empty) ebdb-dwim-mail ebdb-prompt-for-record "Add record to Cc (C-g to skip): " throw "Add record to Bcc (C-g to skip): " register-read-with-preview "Register to use for body text (C-g to skip): "] 10)]) #@153 Prompt for a STYLE, and use it to cite RECORDS. With prefix arg ARG display the citations as a vertical list, otherwise inline. (fn ARG RECORDS STYLE) (defalias 'ebdb-cite-records-ebdb #[771 "\300\301!r\211q\210\302\232\203\303 \210\202\"\304\232\203\305 \210\202\"\306 \210\307\"\210)\310!\207" [get-buffer-create "*EBDB Citation*" "org" org-mode "html" html-mode message-mode ebdb-cite-records pop-to-buffer] 7 (#$ . 99426) (byte-code "\301 \302\303\304\305\306$E\207" [current-prefix-arg ebdb-do-records completing-read "Style: " ("org" "html" "message") nil t] 7)]) #@169 Read and return a record from the EBDB. PROMPT is used in `completing-read'. Actual completion is done using the function `ebdb-record-completion-table'. (fn PROMPT) (defalias 'ebdb-completing-read-record #[257 "\302\303\304\305$\211\211\306\230\262?\205\307\310\"\242\206\311\312\")\207" [ebdb-completion-ignore-case completion-ignore-case completing-read ebdb-record-completion-table nil t "" ebdb-gethash (name alt-names mail) message "No matching records for \"%s\""] 6 (#$ . 100016)]) #@91 Like `read-string', but with `ebdb-complete-mail' completion. (fn PROMPT &optional INIT) (defalias 'ebdb-completing-read-mails #[513 "\303\n#)\207" [ebdb-completion-ignore-case completion-ignore-case ebdb-completing-read-mails-map read-from-minibuffer] 6 (#$ . 100524)]) #@79 Syntax-table to parse matched quotes. Used by function `ebdb-complete-mail'. (defconst ebdb-quoted-string-syntax-table (byte-code "\300 \301\302\303#\210\301\304\305#\210\211\207" [make-syntax-table modify-syntax-entry 92 "\\" 34 "\""] 5) (#$ . 100806)) #@1129 In a mail buffer, complete the user name or mail before point. Completion happens up to the preceeding colon, comma, or BEG. Return non-nil if there is a valid completion, else return nil. Completion behaviour obeys `ebdb-completion-list' (see there). If what has been typed matches a unique EBDB record, insert an address formatted by `ebdb-dwim-mail' (see there). Also, display this record if `ebdb-completion-display-record' is non-nil, If what has been typed is a valid completion but does not match a unique record, display a list of completions. If the completion is done and `ebdb-complete-mail-allow-cycling' is t then cycle through the mails for the matching record. If EBDB would format a given address different from what we have in the mail buffer, the first round of cycling reformats the address accordingly, then we cycle through the mails for the matching record. With prefix CYCLE-COMPLETION-BUFFER non-nil, display a list of all mails available for cycling. Set the variable `ebdb-complete-mail' non-nil for enabling this feature as part of the MUA insinuation. (fn &optional BEG CYCLE-COMPLETION-BUFFER) (defalias 'ebdb-complete-mail #[512 "\204\306 \210\204{`\214~\210\212\307 \210`*X\203{`\310\211\211\212\311\312!\210\313\225\262\262b\210\314\315\316#\203:\310\262\202x\317 p\320\313\321\322\323\"\324\"\325$\216\326 !\210\314\327\316#\211\262\203u\330\310\211%\262\262\3318\204P\262\202P)\266)\266\204\207\332\333!\210\334\335!\210`?\205\216\336\205\226\337\"\316\211\205\241\340 \341#\310\211\211\204\352;\203\273\342\343\"\203\273\313\211\224O\262\344 \341#\262\345\346\347\350\351\"\"!\211A?\205\324\211@\266\202\352\353!\354!\203\344\355\310\"\210\210\211\203\354\f\316=\203\363\356\202\364\f\357!\310\211\204 \332\360!\210\334\335!\210\336\262\n\202\347\340 \347\361>\2054\362\363\"\364! >\204*\365\366\367D\"\210\211\335H\262\2063\370C\371>\205Y\362 \363\"\364! >\204O\365\366\367D\"\210\211\325H\262\206Y\370C\372 >\205y\362\n\363\"\364! >\204t\365\366\367D\"\210\211\331H\262#\"\203\202@\262\204\246\211A\262\242\211\262\203\246\340 \373!C\"\203\206\211\262\310\262\202\206\204\260\374\375\n\"\210\376\"\211\n\230\203\320@\203\312\335\357!GW\204\346\377\262 \202\346 \f|\210\211c\210\201L\"\210\201M\262 \210\266\202\352;\203!;\205 \211;\205 \201N\313\310\313\310\316&\316=\266\202\204!|\210c\210\201O\262\202\352\203\352\f\316=\2031\201P\2022\f\211\203\243\211@\201Q \"\211\203\233\211@\357!\310\203\222\211\203w\211@\211\361=\203\234\362\363\"\364! >\204q\365\366\367D\"\210\211\335H\262;\205\216\211;\205\216\201N\313\310\313\310\316&\316=\266\202\203p@B\262\202p\211\371=\203\315\201R\362\363\"\364! >\204\273\365\366\367D\"\210\211\325H\262\"\203p@B\262\202p\211\372=\203\376\201R\362\363\"\364! >\204\354\365\366\367D\"\210\211\331H\262\"\203p@B\262\202p\211\201S=\2032\373@!;\205$\211;\205$\201N\313\310\313\310\316&\316=\266\202\203p@B\262\202p\211\201T=\203p\211\203o\211@\373!;\205^\211;\205^\201N\313\310\313\310\316&\316=\266\202\203h\211B\262A\266\202\202;\210A\266\202\202O\210\345!\211\203\221\211@\376\" B\262 A\266\202\202{\210\266A\266\202\202?\210A\266\202\2023\210\201U\345!\201V\"\262\204\302\332\360!\210\334\335!\210\336\262\202\351G\335=\203\344 |\210@c\210\201L@ \"\210\201M\262\202\351\201W\262\210\204\325@\203\325\201X!\201Y@A@\"@\211\203\323\350\320\201Z\201[\322\323!\201\\\"\201]\201^%\357!\"\211\262\203\323G\335U\203=@\230\203=\377\262\202\323 \203J\201_\262\202\323\201RA@\362\363\"\364! >\204c\365\366\367D\"\210\211\201`H\262\"@\316A\201a\320\201Z\201b\322\323!\201c\"\201d\201e%\")\230\204\252\f |\210\211c\210\201L\"\210\201f\262\n \266\202\204\323\235A@\206\274@ \n|\210\211c\210\201L \"\210\201g\262 \210\266\201h\235\203\203B\313\201]O\201i\231\203\364\332\201j!\210\202\203\201k \201l =? D\201m\201n\201o\201C!\205!\201p\201qCD\201rBB\201sBBBCD\211\2035\332\201t!\210Er\201u\353!q\210p\201v \210E\310\211FG\316\211H\316IJ\201w \210\201x\201y!\210+\211K\201z!\210\201{!\210)\266\211\203\201\332\201|!\210*\210\336=?\205\213)\207" [ebdb-db-list ebdb-quoted-string-syntax-table completion-ignore-case ebdb-hashtable ebdb-completion-list cl-struct-ebdb-record-cache-tags ebdb-load rfc822-goto-eoh nil re-search-backward "^[^ \n:][^:]*:[ \n]+" 0 re-search-forward "\n[^ ]" t syntax-table make-byte-code "r\301q\210\302\300!)\207" vconcat vector [set-syntax-table] 2 set-syntax-table ",[ \n]*" parse-partial-sexp 3 message "Not a valid buffer position for mail completion" sit-for 1 nothing buffer-substring-no-properties try-completion ebdb-completion-predicate string-match "," all-completions delete-dups apply append mapcar #[257 "\301\"\207" [ebdb-hashtable gethash] 4 "\n\n(fn COMPL)"] get-buffer-window "*Completions*" window-live-p quit-window (name alt-names mail aka organization) ebdb-record-mail "Matching record has no mail field" name slot-value cache type-of signal wrong-type-argument ebdb-record-cache "" alt-names organization ebdb-string error "No match for %s" ebdb-dwim-mail unchanged ebdb-complete-mail-allow-cycling case-fold-search emacs-version completion-list-insert-choice-function completion-base-position default-directory buffer-read-only buffer-file-name buffer-undo-list inhibit-modification-hooks inhibit-read-only standard-output ebdb-complete-mail-cleanup unique compare-strings partial (name alt-names mail organization) gethash member-ignore-case primary mail sort string-lessp choose ebdb-extract-address-components ebdb-message-search 257 "\301\300\"\207" [ebdb-dwim-mail] 4 "\n\n(fn M)" cycle-choose 5 seq-find "\300\302\303\304#)\207" [inhibit-changing-match-data nil t string-match] 8 "\n\n(fn D)" reformat cycle (choose cycle-choose) "23.2" "*Completions* buffer requires at least GNU Emacs 23.2" selected-window minibuffer-window lambda (beg end text) boundp funcall quote (beg end text) ((ebdb-complete-mail-cleanup text beg)) "Making completion list..." get-buffer-create kill-all-local-variables erase-buffer run-hooks temp-buffer-setup-hook display-completion-list internal-temp-output-buffer-show "Making completion list...done"] 31 (#$ . 101071) (list nil current-prefix-arg)]) #@121 Clean up after inserting MAIL at position BEG. If we are past `fill-column', wrap at the previous comma. (fn MAIL BEG) (defalias 'ebdb-complete-mail-cleanup #[514 "\304 \204-iY\203-\212\211b\210\305\306\307 \310#\203,\311u\210\312c\210\313 \210\314\315!\203,`\316\225|\210) \2045\n\205T\317!\320@A@\" \203O\310\321\322\310\322\323 %\210)\324\302!\266\202\207" [fill-column ebdb-completion-display-record ebdb-complete-mail-hook ebdb-silent-internal auto-fill-function search-backward "," line-beginning-position t 1 "\n" indent-relative looking-at "[ \n]+" 0 ebdb-extract-address-components ebdb-message-search ebdb-display-records nil ebdb-popup-window run-hooks] 10 (#$ . 107612)]) #@458 Add aliases from the database to the global alias table. \Give records a "mail alias" field to define an alias for that record. If multiple records in the database have the same mail alias, then that alias expands to a comma-separated list of the mail addresses of all of these people. This function is automatically called each time an EBDB buffer is created. Alternately, use \[ebdb-mail-aliases] in an *EBDB* buffer to force an update. (defalias 'ebdb-mail-aliases #[0 "\303=\203 \304 \210 \211\203[\211@\211@\305\306A\307#\310\311\300B\"\210\312\"\210\313\227\n\"\211\262\2044\314\315!\210\211K\316=\204A\314\317K\"\210\211\320\310\321\322\323\324 A\"DEEM\266A\266\202\202\n\210\325\326!\205e\327\330!\207" [mail-aliases ebdb-mail-alias-alist mail-abbrevs t build-mail-aliases mapconcat #[257 "\300@;\203\301\302\"\202@A@\"\207" [ebdb-dwim-mail ebdb-gethash uuid] 5 "\n\n(fn E)"] ", " nil add-to-list define-mail-abbrev intern-soft error "Cannot find the alias" mail-abbrev-expand-hook "Mail-aliases contains unexpected hook %s" lambda ebdb-mail-abbrev-expand-hook quote mapcar #[257 "\300@!\207" [ebdb-record-uuid] 3 "\n\n(fn R)"] called-interactively-p any message "EBDB mail alias: rebuilding done"] 14 (#$ . 108318) nil]) #@119 Function substituted for `mail-abbrev-expand-hook' when expanding RECORDS. That hook is also run. (fn ALIAS RECORDS) (defalias 'ebdb-mail-abbrev-expand-hook #[514 "\302 \210\205\303\304\305\306\307\310\"\"\306\303\306\311 %)\207" [ebdb-completion-display-record ebdb-silent-internal mail-abbrev-expand-hook t ebdb-display-records delq nil mapcar #[257 "\300\301\"\207" [ebdb-gethash uuid] 4 "\n\n(fn U)"] ebdb-popup-window] 8 (#$ . 109602)]) #@49 Return a list of mail aliases used in the EBDB. (defalias 'ebdb-get-mail-aliases #[0 "\301\302\"\207" [ebdb-mail-alias-alist mapcar car] 3 (#$ . 110057)]) #@140 Ask FIELD of RECORD to perform an action. With the prefix arg, use it an an index into FIELD's list of actions. (fn RECORD FIELD ACTION) (defalias 'ebdb-record-action #[771 "\211\203 \211\"\207\300\301!\207" [message "No action for field"] 6 (#$ . 110220) (byte-code "\301 \302 \303\304\"\211\2058\211G\305U\203\211@A\2028\203*8\243\2068\211@A\2028\306\307\"\310\311\312\"\"A\262E\207" [current-prefix-arg ebdb-current-record ebdb-current-field slot-value actions 1 mapcar #[257 "\211@AB\207" [] 3 "\n\n(fn A)"] assoc completing-read "Action: "] 8)]) #@79 Dial the phone number under point, or the first number of record under point. (defalias 'ebdb-dial #[0 "\300 \301\302 \303\"\203\302 \206\304!\206\305\306!\307\"\207" [ebdb-current-record object-of-class-p ebdb-current-field ebdb-field-phone ebdb-record-phone error "No phone to dial" ebdb-field-phone-dial] 5 (#$ . 110801) nil]) #@531 Compose and send a text message using the Signal protocol. SENDER should be a phone number (with leading "+") to send from. If option `ebdb-record-self' is set, this record will be used as the sender, while RECORDS will be used as the list of recipients. In both cases, `ebdb-signal-get-number' will be used to find a usable number from the record. MESSAGE is the string to send as the body of the text message. ATTACHMENTS is a list of filenames to send as attachments on the message. (fn SENDER RECORDS MESSAGE ATTACHMENTS) (defalias 'ebdb-signal-text #[1028 "\301\302\303\304\"\"\203\305$\202\306\307!\207" [ebdb-signal-program delq nil mapcar ebdb-signal-get-number ebdb--signal-text message "Please set `ebdb-signal-program'"] 10 (#$ . 111147) (byte-code "\203\301\302\303\"\304\"\206\305\306!\307 \305\310!\311\31225\3131.\314\315\316\311\211\211$!B\262\202\210\317\312\237\"0\262F\207" [ebdb-record-self ebdb-signal-get-number ebdb-gethash uuid t ebdb-read-string "Number to send from (or set `ebdb-record-self')" ebdb-do-records "Message contents" nil --ebdb-loop-exit-- (quit ebdb-empty) expand-file-name read-file-name "Attach file (C-g when done): " throw] 10)]) #@57 Grab URL and store it in RECORD. (fn RECORD URL LABEL) (defalias 'ebdb-grab-url #[771 "\300\301\302\303%\304\305#\210\306C!\207" [make-instance ebdb-field-url :url :label ebdb-record-insert-field fields ebdb-display-records] 9 (#$ . 112356) (byte-code "\301 \211\204\n\302\303!\210\304\305\306\"!\307\310\311#E\207" [ebdb-url-label-list browse-url-url-at-point error "No URL at point" ebdb-completing-read-record format "Add `%s' for: " ebdb-read-string "URL label" nil] 7)]) #@200 Format some records and display in a temporary buffer. Records are formatted using FORMATTER, which is prompted for. RECORDS is the record under point, or all marked records. (fn FORMATTER RECORDS) (defalias 'ebdb-format-to-tmp-buffer #[514 "\300\301\302\"!\301\303\"\304\305\"\211\203N\306 \307\310\311\312\313!\314\"\315$\216\300\316!\307\310\311\312\313!\317\"\315$\216\320\321\211\211&\210rq\210\322 \210\323!\210*\210)\210\202|rq\210\322 \210\324\"c\210\211\203p\211@\325\"c\210A\266\202\202\\\210\326\"c\210\327!\210)\330!\210\301\331\"\332!\205\214\211 \262\207" [get-buffer-create slot-value format-buffer-name coding-system object-of-class-p ebdb-formatter-ebdb current-window-configuration make-byte-code 0 "\301\300!\207" vconcat vector [set-window-configuration] 2 " *EBDB Fake Output*" [kill-buffer] ebdb-display-records nil erase-buffer insert-buffer-substring-no-properties ebdb-fmt-header ebdb-fmt-record ebdb-fmt-footer set-buffer-file-coding-system pop-to-buffer post-format-function fboundp] 14 (#$ . 112849) (byte-code "\300 \301 D\207" [ebdb-prompt-for-formatter ebdb-do-records] 2)]) #@36 (fn &optional FORMATTER RECORDS) (defalias 'ebdb-format-all-records #[512 "\302\206-\303\211\204\304 \210\203*\305\306\307\310\311\312\"\313\"\314\315% \"\266\202\202- \266\202\"\207" [ebdb-db-list ebdb-record-tracker ebdb-format-to-tmp-buffer 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)"] 14 (#$ . 113996) (byte-code "\300 C\207" [ebdb-prompt-for-formatter] 1)]) #@96 Format all records in the current *EBDB* buffer. Prompts for FORMATTER to use. (fn FORMATTER) (defalias 'ebdb-format-these-records #[257 "\301\302!\203\303\304\305\"\"\207\306\307!\207" [ebdb-records derived-mode-p ebdb-mode ebdb-format-to-tmp-buffer mapcar car error "Not in an *EBDB* buffer"] 6 (#$ . 114486) (byte-code "\300 C\207" [ebdb-prompt-for-formatter] 1)]) #@42 Copy RECORDS to kill ring. (fn RECORDS) (defalias 'ebdb-copy-records-as-kill #[257 "\301\302\303\"\211\203%\211@\3048\304>A@8\206d{B\262A\266\202\202\210\305\306\307\310\311\312\237\313##!\207" [ebdb-records nil ebdb-record-list t 2 kill-new replace-regexp-in-string "[ \n]*\\'" "\n" mapconcat identity ""] 10 (#$ . 114865) (byte-code "\300\301!C\207" [ebdb-do-records t] 2)]) #@274 For RECORDS copy values of FIELD at point to kill ring. If FIELD is an address or phone with a label, copy only field values with the same label. With numeric prefix NUM, if the value of FIELD is a list, copy only the NUMth list element. (fn RECORDS FIELD &optional NUM) (defalias 'ebdb-copy-fields-as-kill #[770 "\204\300\301!\210\302!\303\211\304!B\262\305!A\262\211\203\203\211@\306\307\310\311\312\313\n!\314\"\315\316%\317\320\321@!\"\"\262\322\323\"\203T\306\307\310\324\312\313\f!\325\"\315\316%\"\262\203e\326GV\203e8C\262\211\203{\211@\304!B\262A\266\202\202f\210A\266\202\202\210\327\330\237\"\331!\210\332\333\"\262\207" [error "Not a field" eieio-object-class nil ebdb-string ebdb-record-list seq-filter make-byte-code 257 "\301\300\"\207" vconcat vector [same-class-p] 4 "\n\n(fn F)" mapcar cdr ebdb-record-current-fields object-of-class-p ebdb-field-labeled "\301!\301\300!\230\207" [ebdb-field-label] 1 ebdb-concat record kill-new message "%s"] 15 (#$ . 115265) (byte-code "\301\302!\303 \205\f\304!E\207" [current-prefix-arg ebdb-do-records t ebdb-current-field prefix-numeric-value] 4)]) #@181 Copy dwim-style mail addresses for RECORDS. Ie, looks like "John Doe ". With prefix argument ARG, prompt for which mail address to use. (fn RECORDS &optional ARG) (defalias 'ebdb-copy-mail-as-kill #[513 "\300\211\211\211\203#\211@\301\"\262\203\211BB\262A\266\202\202\210\302\303\304!\305#\262\306!\210\307!\207" [nil ebdb-record-one-mail mapconcat #[257 "\300@A\"\207" [ebdb-dwim-mail] 4 "\n\n(fn E)"] reverse ", " kill-new message] 10 (#$ . 116427) (byte-code "\301 D\207" [current-prefix-arg ebdb-do-records] 2)]) #@37 Start reading the EBDB Info manual. (defalias 'ebdb-info #[0 "\301\302\303\206\304\"!\207" [ebdb-info-file info format "(%s)Top" "ebdb"] 4 (#$ . 116989) nil]) #@29 Print a short help message. (defalias 'ebdb-help #[0 "\300\301\302!!\207" [message substitute-command-keys "\\new field: \\[ebdb-insert-field]; edit field: \\[ebdb-edit-field]; delete field: \\[ebdb-delete-field-or-record]; mode help: \\[describe-mode]; info: \\[ebdb-info]"] 3 (#$ . 117157) nil]) (provide 'ebdb-com)