;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\303\304\305\"\210\303\306\307\"\210\303\310\311\"\210\303\312\313\"\207" [require ebdb ebdb-com autoload ebdb-snarf "ebdb-snarf" message-goto-cc "message" mail-cc "sendmail" mail-decode-encoded-word-string "mail-parse"] 3) #@74 For communication between `ebdb-update-records' and `ebdb-query-create'. (defvar ebdb-offer-to-create nil (#$ . 670)) #@74 For communication between `ebdb-update-records' and `ebdb-query-create'. (defvar ebdb-update-records-p nil (#$ . 794)) #@138 For communication between `ebdb-update-records' and `ebdb-query-create'. It is a list with elements (NAME MAIL HEADER HEADER-CLASS MUA). (defvar ebdb-update-records-address nil (#$ . 920)) (byte-code "\300\301\302\303\304\305%\210\306\307\310\311\312DD\313\314\315%\210\306\316\310\311\317DD\320\314\321%\210\306\322\310\311\323DD\324\314\325%\210\306\326\310\311\327DD\330\304\301\314\331&\210\306\332\310\311\333DD\334\304\301\314\335&\210\306\336\310\311\337DD\340\304\301\314\335&\210\306\341\310\311\342DD\343\304\301\314\344&\210\306\345\310\311\346DD\347\304\301\314\350&\210\306\351\310\311\352DD\353\304\301\314\354&\210\306\355\310\311\356DD\357\314\360%\207" [custom-declare-group ebdb-mua nil "Variables that specify the EBDB-MUA interface" :group ebdb custom-declare-variable ebdb-mua-auto-update-p funcall function #[0 "\300\207" [existing] 1] "Specify how EBDB handles addresses in mail messages.\nIt can take one of the following values:\n\n nil Do nothing.\n existing Find existing records matching ADDRESS.\n update Search for existing records matching ADDRESS;\n update name and mail field if necessary.\n query Search for existing records matching ADDRESS;\n query for creation of a new record if the record does not exist.\n create or t Search for existing records matching ADDRESS;\n create a new record if it does not yet exist.\n a function This functions will be called with no arguments.\n It should return one of the above values.\n\nNote that this option only controls how EBDB acts on information\nin incoming messages; the option `ebdb-mua-pop-up' controls\nwhether the records in question are actually displayed or not.\n\nAlso see `ebdb-mua-reader-update-p' and\n`ebdb-mua-sender-update-p', as well as the equivalent values for\neach individual MUA package." :type (choice (const :tag "do nothing" nil) (const :tag "search for existing records" existing) (const :tag "update existing records" update) (const :tag "query for update or record creation" query) (const :tag "update or create automatically" create) (function :tag "User-defined function")) ebdb-mua-reader-update-p #[0 "\207" [ebdb-mua-auto-update-p] 1] "Value of `ebdb-mua-auto-update-p' for reader MUAs.\n\"Reader\" MUAs are those that provide an interface for reading\nincoming messages and articles.\n\nDefaults to the value of `ebdb-mua-auto-update-p'." (choice (const :tag "do nothing" nil) (const :tag "search for existing records" existing) (const :tag "update existing records" update) (const :tag "query for update or record creation" query) (const :tag "update or create automatically" create) (function :tag "User-defined function")) ebdb-mua-sender-update-p #[0 "\207" [ebdb-mua-auto-update-p] 1] "Value of `ebdb-mua-auto-update-p' for sender MUAs.\n\"Sender\" MUAs are those that govern mail composition. EBDB\ncurrently only supports the \"message\" and \"mail\" MUAs.\n\nDefaults to the value of `ebdb-mua-auto-update-p'." (choice (const :tag "do nothing" nil) (const :tag "search for existing records" existing) (const :tag "update existing records" update) (const :tag "query for update or record creation" query) (const :tag "update or create automatically" create) (function :tag "User-defined function")) ebdb-message-headers #[0 "\300\207" [((sender "From" "Resent-From" "Reply-To" "Sender") (recipients "Resent-To" "Resent-CC" "To" "CC" "BCC") (organization "Organization"))] 1] "Alist of headers to search for sender and recipients mail addresses.\nEach element is of the form\n\n (CLASS HEADER ...)\n\nThe symbol CLASS defines a class of headers.\nThe strings HEADER belong to CLASS." list ebdb-message-all-addresses #[0 "\300\207" [nil] 1] "If t `ebdb-update-records' returns all mail addresses of a message.\n\nOtherwise this function returns only the first mail address of\neach message." boolean ebdb-message-try-all-headers #[0 "\300\207" [nil] 1] "If t try all message headers to extract an email address from a message.\n\nSeveral EBDB commands extract either the sender or the\nrecipients' email addresses from a message according to\n`ebdb-message-headers'. If EBDB does not find any email address\nin this subset of message headers (for example, because an email\naddress is excluded because of `ebdb-user-mail-address-re') but\n`ebdb-message-try-all-headers' is t, then these commands will\nalso consider the email addresses in the remaining headers." ebdb-accept-header-alist #[0 "\300\207" [nil] 1] "Alist describing which messages to automatically create EBDB records for.\nThe format of this alist is\n ((HEADER-TYPE . REGEXP) ...)\n\nWhere HEADER-TYPE is one of the symbols 'sender, 'recipients',\n'any (meaning 'sender or 'recipients), or 'subject.\n\nFor example, if\n ((sender . \"@.*\\.maximegalon\\.edu\")\n (subject . \"time travel\"))\nEBDB records are only created for messages sent by people at Maximegalon U.,\nor people posting about time travel.\nIf t accept all messages. If nil, accept all messages.\n\nSee also `ebdb-ignore-header-alist', which has the opposite effect." (repeat (cons (choice (symbol :tag "Sender" sender) (symbol :tag "Recipients" recipients) (symbol :tag "Sender or recipients" any) (symbol :tag "Subject" subject)) (regexp :tag "Regexp to match on header value"))) ebdb-ignore-header-alist #[0 "\300\207" [nil] 1] "Alist describing which messages not to automatically create EBDB records for.\nThe format of this alist is\n ((HEADER-TYPE . REGEXP) ... )\n\nWhere HEADER-TYPE is one of the symbols 'sender, 'recipients',\n'any (meaning 'sender or 'recipients), or 'subject.\n\nFor example, if\n ((sender . \"mailer-daemon\")\n (recipients . \"mailing-list-1\\\\|mailing-list-2\"))\nno EBDB records are created for messages from any mailer daemon,\nor messages sent to or CCed to either of two mailing lists.\nIf t ignore all messages. If nil do not ignore any messages.\n\nSee also `ebdb-accept-header-alist', which has the opposite effect." (repeat (cons (choice (symbol :tag "Sender" sender) (symbol :tag "Recipients" recipients) (symbol :tag "Sender or recipients" any) (symbol :tag "Subject" subject)) (regexp :tag "Regexp to match on header value"))) ebdb-user-mail-address-re #[0 ";\205\301\302\"\205\303\304\305\306\"!\307Q\207" [user-mail-address string-match "\\`\\([^@]*\\)\\(@\\|\\'\\)" "\\<" regexp-quote match-string 1 "\\>"] 5] "A regular expression matching your mail addresses.\nThis option can be directly set to a regexp. It can also be the\nsymbol 'message, in which case the value of\n`message-alternative-emails' will be used, or the symbol 'self,\nin which case the value will be constructed from the mail\naddresses of the record pointed to by option `ebdb-record-self'.\nSeveral EBDB commands extract either the sender or the\nrecipients' email addresses from a message according to\n`ebdb-message-headers'. Yet an email address will be ignored if\nit matches `ebdb-user-mail-address-re'. This way the commands\nwill not operate on your own record. See also\n`ebdb-message-try-all-headers'." (choice (const :tag "Use addresses from `ebdb-record-self'" self) (const :tag "Use the value of `message-alternative-emails'" message) (regexp :tag "Regexp matching your mail addresses")) ebdb-permanent-ignores-file #[0 "\300\301!\207" [locate-user-emacs-file ".ebdb-permanent-ignores"] 2] "File in which to save a list of permanently-ignored mails.\nEBDB can offer to permanently ignore a mail address, so that it\nwill never again be considered for record creation or update.\nThis option specifies the file in which to save those mails, or\nnil not to permanently ignore any mail addresses.\n\nIgnored mails are written one per line, with no name or other\nleading/trailing characters." (choice (const :tag "do not save ignored mails" nil) (file :tag "file in which to save ignored mails"))] 8) #@55 Variable holding a list of permanently-ignored mails. (defvar ebdb-permanently-ignored-mails nil (#$ . 8836)) #@181 Load permanent ignores. Reads mail addresses to permanently ignore from the option `ebdb-permanent-ignores-file', and stores them in the variable `ebdb-permanently-ignored-mails'. (defalias 'ebdb-mua-load-permanent-ignores #[0 "\2055\302!\2055\303\304!r\211q\210\305\306\307\310\311!\312\"\313$\216\314!\210\315 \306U?\2052\316\317 \320\321\322$\211*\262\207" [ebdb-permanent-ignores-file ebdb-permanently-ignored-mails file-exists-p generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 insert-file-contents buffer-size split-string buffer-string "\n" t "[[:blank:]]"] 7 (#$ . 8953)]) (add-hook 'ebdb-after-load-hook 'ebdb-mua-load-permanent-ignores) #@54 Write the list of permanently-ignored mails to disk. (defalias 'ebdb-mua-save-permanent-ignores #[0 "\205C \205C\302\303\304!!\305\306\307\310\311!\312\"\313$\216r\211q\210 \211\2051\211@\211\314\261\210A\266\202\202\262)rq\210\315\316\211\316\306%\210*\266\202\207" [ebdb-permanent-ignores-file ebdb-permanently-ignored-mails get-buffer-create generate-new-buffer-name " *temp file*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 "\n" write-region nil] 9 (#$ . 9687)]) (add-hook 'ebdb-after-save-hook 'ebdb-mua-save-permanent-ignores) #@143 Get or set the value of variable `ebdb-user-mail-address-re'. If it's a symbol, check if it's one of 'self or 'message, and set accordingly. (defalias 'ebdb-get-user-mail-address-re #[0 ";\203\207\304=\2036\305 \306\"\211\204\307\310!\210\311\312\313\"\314!\n>\204-\315\316\317D\"\210\211\320H\262!\211\207\321=\203F\322\303!\203F \211\207\207" [ebdb-user-mail-address-re ebdb-record-self cl-struct-ebdb-record-cache-tags message-alternative-emails self ebdb-gethash uuid user-error "`ebdb-user-mail-address-re' set to 'self, but `ebdb-record-self' is not set" regexp-opt slot-value cache type-of signal wrong-type-argument ebdb-record-cache 5 message boundp] 7 (#$ . 10288)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\315&\210\300\316\302\303\317DD\320\306\307\310\321&\210\300\322\302\303\323DD\324\306\307\310\325&\210\300\326\302\303\327DD\330\306\307\310\331&\210\300\332\302\303\333DD\334\306\307\310\335&\210\300\336\302\303\337DD\340\306\307\310\335&\210\341\342\343\342\344\345#\346#\210\347\342\345\350\345\351%\210\352\353\354\355\356\357\360\361\362\363& \207" [custom-declare-variable ebdb-add-name funcall function #[0 "\300\207" [query] 1] "How to handle new names for existing EBDB records.\nThis handles messages where the real name differs from the name\nin a EBDB record with the same mail address, as in \"John Smith \"\nversus \"John Q. Smith \".\nAllowed values are:\n t Automatically change the name to the new value.\n query Query whether to use the new name.\n nil Ignore the new name.\n a number Number of seconds EBDB displays the name mismatch.\n (without further action).\n a function This is called with two args, the record and the new name.\n It should return one of the above values.\n a regexp If the new name matches this regexp ignore it.\n Otherwise query to add it.\nSee also `ebdb-add-aka'." :group ebdb-mua :type (choice (const :tag "Automatically use the new name" t) (const :tag "Query for name changes" query) (const :tag "Ignore the new name" nil) (integer :tag "Number of seconds to display name mismatch") (function :tag "Function for analyzing name handling") (regexp :tag "If the new name matches this regexp ignore it.")) ebdb-add-aka #[0 "\300\207" [query] 1] "How to handle alternate names for existing EBDB records.\nAllowed values are:\n t Automatically store alternate names as AKA.\n query Query whether to store alternate names as an AKA.\n nil Ignore alternate names.\n a function This is called with two args, the record and the new name.\n It should return one of the above values.\n a regexp If the alternate name matches this regexp ignore it.\n Otherwise query to add it.\nSee also `ebdb-add-name'." (choice (const :tag "Automatically store alternate names as AKA" t) (const :tag "Query for alternate names" query) (const :tag "Ignore alternate names" nil) (function :tag "Function for alternate name handling") (regexp :tag "If the alternate name matches this regexp ignore it.")) ebdb-add-mails #[0 "\300\207" [query] 1] "How to handle new mail addresses for existing EBDB records.\nThis handles messages where the mail address differs from the mail addresses\nin a EBDB record with the same name as in \"John Q. Smith \"\nversus \"John Q. Smith \".\nAllowed values are:\n t Automatically add new mail addresses to the list of mail addresses.\n query Query whether to add it.\n nil Ignore new mail addresses.\n a number Number of seconds EBDB displays the new address\n (without further action).\n a function This is called with two args, the record and the new mail address.\n It should return one of the above values.\n a regexp If the new mail address matches this regexp ignore the new address.\n Otherwise query to add it.\nSee also `ebdb-ignore-redundant-mails'." (choice (const :tag "Automatically add new mail addresses" t) (const :tag "Query before adding new mail addresses" query) (const :tag "Never add new mail addresses" nil) (number :tag "Number of seconds to display new addresses") (function :tag "Function for analyzing name handling") (regexp :tag "If the new address matches this regexp ignore it.")) ebdb-ignore-redundant-mails #[0 "\300\207" [query] 1] "How to handle redundant mail addresses for existing EBDB records.\nFor example, \"foo@bar.baz.com\" is redundant w.r.t. \"foo@baz.com\".\nThis affects two things, whether a new redundant mail address is added\nto EBDB and whether an old mail address, which has become redundant\nbecause of a newly added mail address, is removed from EBDB.\n\nAllowed values are:\n t Automatically ignore redundant mail addresses.\n query Query whether to ignore them.\n nil Do not ignore redundant mail addresses.\n a number Number of seconds EBDB displays redundant mail addresses\n (without further action).\n a function This is called with two args, the record and the new mail address.\n It should return one of the above values.\n a regexp If the new mail address matches this regexp never ignore\n this mail address. Otherwise query to ignore it.\nSee also `ebdb-add-mails' and `ebdb-canonicalize-mail-function'." (choice (const :tag "Automatically ignore redundant mail addresses" t) (const :tag "Query whether to ignore them" query) (const :tag "Do not ignore redundant mail addresses" nil) (number :tag "Number of seconds to display redundant addresses") (function :tag "Function for handling redundant mail addresses") (regexp :tag "If the new address matches this regexp never ignore it.")) ebdb-message-mail-as-name #[0 "\300\207" [t] 1] "If non-nil use mail address of message as fallback for name of new records." boolean ebdb-notice-mail-hook #[0 "\300\207" [nil] 1] "Hook run when a record's mail address is \"noticed\" in a message.\n\nThis means that the mail address in a message belongs to an\nexisting EBDB record or to a record EBDB has created for the mail\naddress.\n\nRun with one argument, the record. It is up to the hook function\nto determine which MUA is used and to act appropriately. Hook\nfunctions can use the variable `ebdb-update-records-address' to\ndetermine the header and class of the mail address according to\n`ebdb-message-headers'.\n\nIf a message contains multiple mail addresses belonging to one EBDB record,\nthis hook is run for each mail address. Use `ebdb-notice-record-hook'\nif you want to notice each record only once per message." hook ebdb-notice-record-hook #[0 "\300\207" [nil] 1] "Hook run each time a record is \"noticed\" in a message.\n\nThis means that the mail address in a message belongs to an\nexisting EBDB record or to a record EBDB has created for the mail\naddress.\n\nRun with two arguments: the record, and one of the symbols\n'sender or 'recipient. It is up to the hook function to\ndetermine which MUA is used and to act appropriately." defalias ebdb-notice-record cl-generic-define (record type) nil "Inform RECORD that it's been \"noticed\".\n\nTYPE is one of the symbols 'sender or 'recipient, indicating\nRECORD's location in the message headers.\n\n(fn RECORD TYPE)" cl-generic-define-method ((rec ebdb-record) type) #[514 "\300\301#\210\302\303\304\305\"\304\306\"B\"\211\205'\211@\307#\210A\266\202\202\262\207" [run-hook-with-args ebdb-notice-record-hook delq nil slot-value notes fields ebdb-notice-field] 9 "Notice REC.\n\nThis means running the `ebdb-notice-record-hook', and passing on\nthe notice message to all REC's `ebdb-field-user' instances, and\nits notes fields. Other built in fields (mail, phone, address)\nare not \"noticed\", nor is the timestamp updated.\n\n(fn REC TYPE)"] define-widget ebdb-alist-with-header group "My group" :match ebdb-alist-with-header-match :value-to-internal #[514 "\211\205 \211@AD\207" [] 4 "\n\n(fn WIDGET VALUE)"] :value-to-external #[514 "\211\205\f\300@CA@\"\207" [append] 5 "\n\n(fn WIDGET VALUE)"]] 10) #@21 (fn WIDGET VALUE) (defalias 'ebdb-alist-with-header-match #[514 "\300\301\302#\"\207" [widget-group-match widget-apply :value-to-internal] 8 (#$ . 18489)]) (byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\315&\210\300\316\302\303\317DD\320\306\307\310\321&\210\322\323\324\325!\"\210\322\326\327\325!\"\210\322\330\326\"\210\331\330\332\333#\210\334\325\335\326#\336\325\337\340\341$\207" [custom-declare-variable ebdb-mua-pop-up funcall function #[0 "\300\207" [t] 1] "If non-nil, display an auto-updated EBDB window while using a MUA." :group ebdb-mua :type boolean ebdb-mua-default-formatter #[0 "\207" [ebdb-default-multiline-formatter] 1] "The default formatter to use for MUA pop-up buffers.\nThe value should be an instance of the\n`ebdb-formatter-ebdb-multiline' or the\n`ebdb-formatter-ebdb-oneline' classes. Easy choices are the\nvalue of `ebdb-default-multiline-formatter' or\n`ebdb-default-oneline-formatter'." ebdb-formatter-ebdb ebdb-mua-summary-unification-list #[0 "\300\207" [(name mail message-name message-mail message-address)] 1] "List of FIELDs considered by `ebdb-mua-summary-unify'.\nFor the RECORD matching the address of a message,\n`ebdb-mua-summary-unify' returns the first non-empty field value\nmatching an element FIELD from this list. Each element FIELD may\nbe a valid argument of `ebdb-record-field' for RECORD. In\naddition, this list may also include the following elements:\n\n message-name The name in the address of the message\n message-mail The mail in the address of the message\n message-address The complete address of the message\n\nThese provide a fallback if a message does not have a matching RECORD\nor if some FIELD of RECORD is empty." (repeat (symbol :tag "Field")) defalias ebdb-field-summary-mark-p eieio-make-class-predicate ebdb-field-summary-mark ebdb-field-summary-mark--eieio-childp eieio-make-child-predicate ebdb-field-summary-mark-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-summary-mark) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user) ((char :type character :initarg :char :documentation "The character to display in MUA summary buffers for this\n record.")) (:human-readable "summary mark" :documentation "Field holding the character to be displayed in MUA summary\n buffers.")] 8) #@80 Create a new object of class type `ebdb-field-summary-mark'. (fn &rest SLOTS) (defalias 'ebdb-field-summary-mark #[128 "\300\301\302#\207" [apply make-instance ebdb-field-summary-mark] 5 (#$ . 20879)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-summary-mark compiler-macro ebdb-field-summary-mark--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-summary-mark--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 (#$ . 21222)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313\312\314\302#\315#\210\300\312\302\316\302\317%\210\320\321\322\323\324DD\325\326\327\330\331&\210\320\332\322\323\333DD\334\326\327\330\335&\210\320\336\322\323\337DD\340\326\327\330\335&\207" [cl-generic-define-method ebdb-read nil ((class (subclass ebdb-field-summary-mark)) &optional slots obj) t #[1026 "\300\301!\302\303##\207" [read-char "Character: " plist-put :char] 11 "\n\n(fn CL--CNM CLASS &optional SLOTS OBJ)"] ebdb-string ((field ebdb-field-summary-mark)) #[257 "\300\301\302\"!\207" [char-to-string slot-value char] 5 "\n\n(fn FIELD)"] defalias ebdb-mua-make-summary-mark cl-generic-define (record) "Return a single-character string to mark RECORD in an MUA\n summary buffer.\n\n(fn RECORD)" ((_record ebdb-record)) #[257 "\300\207" [nil] 2 "By default, do nothing.\n\n(fn RECORD)"] custom-declare-variable ebdb-mua-summary-mark funcall function #[0 "\300\207" [#1="+"] 1 #1#] "Default mark for message addresses known to EBDB.\nIf nil do not mark message addresses known to EBDB.\nSee variable `ebdb-mua-summary-mark' and `ebdb-mua-summary-unify'.\nSee also the field class `ebdb-field-summary-mark'." :group ebdb-mua :type (choice (string :tag "Mark used") (const :tag "Do not mark known posters" nil)) ebdb-mua-summary-unify-format-letter #[0 "\300\207" [#2="E"] 1 #2#] "Letter used by `ebdb-mua-summary-unify' in the MUA summary format string.\nFor Gnus, combine it with the %u specifier in\n`gnus-summary-line-format' see there), for example use\n\"%U%R%z%I%(%[%4L: %-23,23uB%]%) %s\\n\". For VM, combine it\nwith the %U specifier in `vm-summary-format' (see there), for\nexample, use \"%n %*%a %-17.17UB %-3.3m %2d %4l/%-5c\n%I\\\"%s\\\"\\n\". This customization of\n`gnus-summary-line-format' / `vm-summary-format' is required to\nuse `ebdb-mua-summary-unify'. Currently no other MUAs support\nthis EBDB feature." string ebdb-mua-summary-mark-format-letter #[0 "\300\207" [#3="e"] 1 #3#] "Letter used by function `ebdb-mua-summary-mark' when formatting MUA summary.\nFor Gnus, combine it with the %u specifier in\n`gnus-summary-line-format' (see there), for example, use\n\"%U%R%z%I%(%[%4L: %ue%-23,23f%]%) %s\\n\". For VM, combine it\nwith the %U specifier in `vm-summary-format' (see there), for\nexample, use \"%n %*%a %Ue%-17.17F %-3.3m %2d %4l/%-5c\n%I\\\"%s\\\"\\n\". This customization of\n`gnus-summary-line-format' / `vm-summary-format' is required to\nuse function `ebdb-mua-summary-mark'. Currently no other MUAs\nsupport this EBDB feature."] 8) #@540 Variable holding lists of mail folder names and mail regexps. This is a list of lists: the car of each list element is a string folder name, followed by an arbitrary number of strings representing regular expressions matching mail addresses. The value of this variable is usually constructed from instances of the `ebdb-field-mail-folder' field. It's also possible to manually add regexps to this list, if for instance the user wishes to match mail addresses more broadly. In this case the variable should be set before EBDB is loaded. (defvar ebdb-mail-folder-list nil (#$ . 24044)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias ebdb-field-mail-folder-p eieio-make-class-predicate ebdb-field-mail-folder ebdb-field-mail-folder--eieio-childp eieio-make-child-predicate ebdb-field-mail-folder-child-p make-obsolete "use (cl-typep ... \\='ebdb-field-mail-folder) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (ebdb-field-user) ((folder :type string :initarg :folder :custom string :documentation "The folder name to split mail to.")) (:human-readable "mail folder" :documentation "A field holding the string names of MUA\n folders. The MUA packages may perform automatic splitting and\n filing of messages from records based on the value of this\n field.")] 6) #@79 Create a new object of class type `ebdb-field-mail-folder'. (fn &rest SLOTS) (defalias 'ebdb-field-mail-folder #[128 "\300\301\302#\207" [apply make-instance ebdb-field-mail-folder] 5 (#$ . 25455)]) (byte-code "\300\301\302\303#\300\207" [function-put ebdb-field-mail-folder compiler-macro ebdb-field-mail-folder--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'ebdb-field-mail-folder--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 (#$ . 25793)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\307\310%\210\300\311\302\312\307\313%\210\300\314\302\315\307\316%\210\300\317\302\320\307\321%\207" [cl-generic-define-method ebdb-string nil ((f ebdb-field-mail-folder)) #[257 "\300\301\"\207" [slot-value folder] 4 "\n\n(fn F)"] ebdb-read ((c (subclass ebdb-field-mail-folder)) &optional slots obj) t #[1026 "\301\302\"\204\303\302\304\305\205\306\307\"##\262#\207" [ebdb-mail-folder-list plist-get :folder plist-put ebdb-read-string "Folder name" slot-value folder] 12 "\n\n(fn CL--CNM C &optional SLOTS OBJ)"] ebdb-parse ((c (subclass ebdb-field-mail-folder)) (str string) &optional slots) #[1027 "\300\301\"\204\302\301#\262#\207" [plist-get :folder plist-put] 8 "\n\n(fn CL--CNM C STR &optional SLOTS)"] ebdb-init-field ((f ebdb-field-mail-folder) record) #[771 "\211\203G\302\303\"\304\305\302\306\"\307!>\204\310\311\312D\"\210\211\313H\262\"\314 \"\203E\211\203?\315 \"\316\317A\"!\241\210\202EB B\266 \207" [cl-struct-ebdb-record-cache-tags ebdb-mail-folder-list slot-value folder mapcar regexp-quote cache type-of signal wrong-type-argument ebdb-record-cache 5 assoc-string assoc delete-dups append] 11 "\n\n(fn CL--CNM F RECORD)"] ebdb-delete-field ((f ebdb-field-mail-folder) record &optional _unload) #[1027 "\203<\302\303\"\304\305\302\306\"\307!>\204\310\311\312D\"\210\211\313H\262\"\314 \"\203:\211\203:\315 \"\316A\"\241\210\266 \207" [cl-struct-ebdb-record-cache-tags ebdb-mail-folder-list slot-value folder mapcar regexp-quote cache type-of signal wrong-type-argument ebdb-record-cache 5 assoc-string assoc seq-difference] 12 "\n\n(fn CL--CNM F RECORD &optional UNLOAD)"]] 6) #@71 Return non-nil if REGEXP matches value of HEADER. (fn HEADER REGEXP) (defalias 'ebdb-message-header-re #[514 "\301!\302\211\205 \303\")\207" [case-fold-search ebdb-mua-message-header t string-match] 6 (#$ . 27757)]) (put 'ebdb-message-header-re 'byte-optimizer 'byte-compile-inline-expand) #@176 Check if ADDRESS-PARTS is acceptable in position HEADER-TYPE. When optional INVERT is non-nil, invert the sense of the check. (fn HEADER-TYPE ADDRESS-PARTS &optional INVERT) (defalias 'ebdb-mua-check-header #[770 "\211\203\202 \304\3052\212\211\203\204\211@\211@\262\306=\203J\306=\203J\307A\310!\311\211\2056\312\")\266\203\203}\313\305?\205E\311\"\210\202}=\204^\314=\203}\315>\203}\211AA@\304\311\312#)\266\203\203}\313\305?\205{\311\"\210A\266\202\202\210\313\305\311\"0\207" [ebdb-ignore-header-alist ebdb-accept-header-alist case-fold-search inhibit-changing-match-data nil done subject "Subject" ebdb-mua-message-header t string-match throw any (sender recipients)] 14 (#$ . 28060)]) (put 'ebdb-mua-check-header 'byte-optimizer 'byte-compile-inline-expand) #@369 Decide if the address in ADDRESS-PARTS should be acted upon. Return t if the header "passes". Takes into consideration where the address was seen, as HEADER-TYPE, as well as the IGNORE-ADDRESS argument, and the variables `ebdb-user-mail-address-re', `ebdb-accept-header-alist', and `ebdb-ignore-header-alist'. (fn HEADER-TYPE ADDRESS-PARTS &optional IGNORE-ADDRESS) (defalias 'ebdb-mua-test-headers #[770 "@A@\304 ;\2034\203 \305\306\307#)\266\203\206P\2034\305\306\307#)\266\203\206P\211;\205P\211\211\310\230\262?\205P\211\305\306\307#)\266\203?\205\275 \204`\n\204`\306\202\275 \203\372\n\204\372\305\211\203s\n\202t \305\3112\365\211\203\357\211@\211@\262\312=\203\265\312=\203\265\313A\314!\306\211\205\241\307\")\266\203\203\350\315\311?\205\260\306\"\210\202\350=\204\311\316=\203\350\317>\203\350\211AA@\305\306\307#)\266\203\203\350\315\311?\205\346\306\"\210A\266\202\202z\210\315\311\306\"0\266\205\202\275\n\203\224 \204\224\306\211\203 \n\202 \305\3112\217\211\203\211\211@\211@\262\312=\203O\312=\203O\313A\314!\306\211\205;\307\")\266\203\203\202\315\311?\205J\306\"\210\202\202=\204c\316=\203\202\317>\203\202\211AA@\305\306\307#)\266\203\203\202\315\311?\205\200\306\"\210A\266\202\202\210\315\311\306\"0\266\205\202\275 \205\275\n\205\275\305\211\203\247\n\202\250 \305\3112)\211\203#\211@\211@\262\312=\203\351\312=\203\351\313A\314!\306\211\205\325\307\")\266\203\203\315\311?\205\344\306\"\210\202=\204\375\316=\203\317>\203\211AA@\305\306\307#)\266\203\203\315\311?\205\306\"\210A\266\202\202\256\210\315\311\306\"0\266\205\205\275\306\211\2039\n\202: \305\3112\273\211\203\265\211@\211@\262\312=\203{\312=\203{\313A\314!\306\211\205g\307\")\266\203\203\256\315\311?\205v\306\"\210\202\256=\204\217\316=\203\256\317>\203\256\211AA@\305\306\307#)\266\203\203\256\315\311?\205\254\306\"\210A\266\202\202@\210\315\311\306\"0\266\205\207" [inhibit-changing-match-data ebdb-accept-header-alist ebdb-ignore-header-alist case-fold-search ebdb-get-user-mail-address-re nil t string-match "" done subject "Subject" ebdb-mua-message-header throw any (sender recipients)] 20 (#$ . 28879)]) (byte-code "\300\301\302\301\303\304#\305#\207" [defalias ebdb-mua-message-header cl-generic-define (header) nil "Get value of HEADER for the mua keyed to major-mode.\n\n(fn HEADER)"] 6) #@482 Process mail addresses extracted from a message. Return list with elements (NAME EMAIL HEADER HEADER-CLASS MUA). HEADER-CLASS is defined in `ebdb-message-headers'. If HEADER-CLASS is nil, use all classes in `ebdb-message-headers'. Returned address components are checked against the the values of IGNORE-ADDRESS, `ebdb-user-mail-address-re', `ebdb-accept-header-alist' and `ebdb-ignore-header-alist', and are discarded as appropriate. (fn &optional HEADER-CLASS IGNORE-ADDRESS) (defalias 'ebdb-get-address-components #[512 "\203\f\304\"C\202 \305 !\306\211\211\3071\241\211\205\233\211@\211A\211\203\223\211@\310!\211\262\203\214\311!\262\312\313\"\211\203\213\211@\211A@\262\203\204\227\n\235\204\204\314\315 \314\"A@P\227\n\235\204\204\316@#\203\204\227\nB\262\n\211@A@@\n\257 B\262 A\266\202\2028\210A\266\202\202 \210A\266\202\202\2620\202\246\210\317\320\n\"\210\237\206\304\205\304 \205\304\321\304\"\"\322\306\")\207" [ebdb-message-headers ebdb-permanently-ignored-mails major-mode ebdb-message-try-all-headers assoc copy-sequence nil (cl-no-applicable-method) ebdb-mua-message-header mail-decode-encoded-word-string ebdb-extract-address-components t "@" split-string ebdb-mua-test-headers error "EBDB does not support %s" remove ebdb-get-address-components] 18 (#$ . 31407)]) #@1048 Find and possibly edit the records matching ADDRESS-LIST. ADDRESS-LIST is a list of mail addresses. (It can be extracted from a mail message using `ebdb-get-address-components'.) UPDATE-P may take the following values: existing Find existing records matching ADDRESS. update Search for existing records matching ADDRESS; update name and mail field if necessary. query Search for existing records matching ADDRESS; query for creation of a new record if the record does not exist. create or t Search for existing records matching ADDRESS; create a new record if it does not yet exist. nil Do nothing. a function This functions will be called with no arguments. It should return one of the above values. If SORT is non-nil, sort records according to `ebdb-record-lessp'. Otherwise, the records are ordered according to ADDRESS-LIST. Usually this function is called by the wrapper `ebdb-mua-auto-update'. (fn ADDRESS-LIST &optional UPDATE-P SORT) (defalias 'ebdb-update-records #[769 "\306!\203\n \262\307=\203\310\262\311\312\211\203\211A\262\242\211\262\203 \312\3132X\314=\203C\315@A@\"\202T\316=\203P\317\320\"\202T\317\"\262\3120\211\321=\203d\312\262 \202\372\211\322=\203\223A@\203\204A@\227\211 \235\203~ \202\201\211 B\262\f\204\372\323\324!\210\325\326!\210\202\372\211\327=\203\312A@\203\372\330\331A@\330\307#A@P\227\211 \235\203\265 \202\270\211 B\262\f\204\372\323\324!\210\325\326!\210\202\372\211\332=\204\372\333\312\237\"\211\203\371\211@\211\235\203\345\202\350\211B\262\334\3358\"\210A\266\202\202\325\210\203 \204\312\262 )\266\202\203\336\337\"\202\211\237\262\211\203' \204'\211@C\262*\207" [ebdb-update-records-p ebdb-offer-to-create ebdb-update-records-address ebdb-permanently-ignored-mails ebdb-permanent-ignores-file ebdb-message-all-addresses functionp t create start nil done existing ebdb-message-search query ebdb-annotate-message ebdb-query-create quit ignore message "Mail will be ignored for this session only" sit-for 2 ignore-domain "@" split-string next delq ebdb-notice-record 3 sort ebdb-record-lessp] 15 (#$ . 32766)]) #@145 Interactive query used by `ebdb-update-records'. Return t if the record should be created or nil otherwise. Honor previous answers such as `!'. (defalias 'ebdb-query-create #[0 "\211\250\2040\304\305 @\206 A@\"\306\211\204(\307!\262\211;\205#\211\310H\262\202\211\262\311\312!\266\211\313=\203:\314\202\330\211\315=\203F\211\314\202\330\211\316=\204R\211\317=\203Y\320\321\322\"\202\330\211\323=\204e\211\324=\203l\320\321\325\"\202\330\211\326=\203y\320\321\327\"\202\330\211\330=\203\206\320\321\331\"\202\330\211\332=\203\225\333\320\321\322\"\202\330\334 \335\310\336\337\340!\341\"\342$\216\343\344!\345!\206\260\346\347 !rq\210\350 \210\306\351 \210\352c\210\353\306!\210eb\210)\354\"\210\355!\210)\266\356 )\262\207" [ebdb-offer-to-create ebdb-update-records-address ebdb-update-records-p buffer-read-only format "%s is not in EBDB; add? (y,!,n,i,I,s,q,?) " nil read-key-sequence 0 message "" 121 t 33 110 32 throw done next 113 7 quit 105 ignore 73 ignore-domain 115 existing current-window-configuration make-byte-code "\301\300!\207" vconcat vector [set-window-configuration] 2 get-buffer-create " *EBDB Help*" get-buffer-window split-window get-lru-window special-mode erase-buffer "Your answer controls how EBDB updates/searches for records.\n\nType ? for this help.\nType y to add the current record.\nType ! to add all remaining records.\nType n to skip the current record. (You can also type space)\nType i to permanently ignore this mail address\nType I to permanently ignore this mail domain\nType s to switch from annotate to search mode.\nType q to quit updating records. No more search or annotation is done." set-buffer-modified-p set-window-buffer fit-window-to-buffer ebdb-query-create] 8 (#$ . 35023)]) #@582 Fill the records for message ADDRESS with as much info as possible. If a record for ADDRESS does not yet exist, UPDATE-P controls whether a new record is created for ADDRESS. UPDATE-P may take the values: update or nil Update existing records, never create a new record. query Query interactively whether to create a new record. create or t Create a new record. a function This functions will be called with no arguments. It should return one of the above values. Return the records matching ADDRESS or nil. (fn ADDRESS &optional UPDATE-P) (defalias 'ebdb-annotate-message #[513 "@A\211@A\211@A\211@A\211@A\n \306\307\"\203'\310\202(\311\230?\2052\211\262\"\312\211\204H\313!\203H \262\314=\203U\315\262\202]\204]\316\262\204\303\316=\204\303\204p\203\303 \203\210\203\210\203\202\317\230\203\210\n!\262\315=\204\245\320=\203\303\321\322\323\206\240\"!\203\303\324!C\262\314\262\325\326\312\314\"@\"\210\327\330@\"\210\327\331@\"\210\211\203\374\211@\332\333\"\334! >\204\335\335\336\337D\"\210\211\340H\262\312\211\211\211\203\371\341 \"\210\202\262\203\262;\205\211;\205\342\343\312\343\312\314&\314=\266\202\204\262\344 \345#\204\262\f \313!\203;\"\266\203\202Q;\203N\346\"?\205O\320\266\203\202Q\266\203\211\262\203\262\247\203o \204\262\347\350 #\210\351!\210\202\262\203\322\352\n#\202\210\322\353\354 !#\314=\206\233\320=\205\233 \206\233\321!\266\202\203-\203 \355 \356\"\203 \357\332 \333\"\334! >\204\304\335\336\337D\"\210\211\360H\262\"\204 @  \313!\203\342\"\266\203\202\370;\203\365\346\"?\205\366\320\266\203\202\370\266\203\322\361\n\"\314=\206\320=\205 \206\321!\266\202\203 \362 \332 \363\"\364#\210\341 \"\210\363\262\202\262\203\262\355 \356\"\203\262\357\332 \333\"\334! >\204Q\335\336\337D\"\210\211\360H\262\"\204\262@ \313!\203o\"\266\203\202\205;\203\202\346\"?\205\203\320\266\203\202\205\266\203\322\365 #\314=\206\237\320=\205\237 \206\237\321!\266\202\203\262\362 \366\345\"\364#\210\363\262\203gA \313!\203\314\"\266\203\202\342;\203\337\346\"?\205\340\320\266\203\202\342\266\203\211\262\203g\332 \333\"\334! >\204\374\335\336\337D\"\210\211\367H\262\314\312\211\211B\211A\262\242\211\262\203.\370!\211\262\203\346 \"\203\262\312\262\202\203d\247\203M \204d\347\371\372!#\210\351!\210\202d\314=\204a \204a\321\322\373\"!\203d\262\f)\266\3741u\366C\"0\202w\210\312\262\2039\372!\375\232\2049\357\372!\332 \333\"\334! >\204\240\335\336\337D\"\210\211\367H\262\"\2049\203\270\362 \376#\210\2029D \313!\203\315\"\266\203\202\343;\203\340\346\"?\205\341\320\266\203\202\343\266\203\211\262\2039\247\203 \2049\347\377\372 !\372\n!#\210\351!\210\2029\314=\204o \204o\321\322\201E\372\n!\372 !#!\204o\313!\203+ \262\201F>\204G\320=\2039\321\322\201G\372\f!\"!\2039\324!\262 \325\326\312\314\"\n\"\210\327\330\n\"\210\327\331\n\"\210\341 \"\210\314\211\262\2039\201H !\203)\370\372 !!\314\312\211B\211\203\252\211@\346\372!\"\203\236\211B\262\202\243\211B\262A\266\202\202\206\210\322\201I\340GW\203\274\201J\202\275\317\201K\376\237\"#\332\333\"\334! >\204\331\335\336\337D\"\210\211\340H\262\203$\247\203\374 \204$\347\201L#\210\351!\210\202$\314=\204 \204\321\322\201M\"!\203$\314=\203!\347\201N#\210\262\266)\266\362\n \376#\210\2048\314\262\210\203\212 \204x\332 \333\"\334! >\204U\335\336\337D\"\210\211\340H\262\203n\347\201O\372 !\372\n!#\210\202x\347\201P\372 !\"\210\201Q !\210\327\201R\n\"\210\202\344\203\344 \204\334\363=\203\245\347\201S\372 !\"\210\202\334\332 \333\"\334! >\204\271\335\336\337D\"\210\211\340H\262\203\322\347\201T\372 !\372\n!#\210\202\334\347\201U\372 !\"\210\327\201R\n\"\210\327\201V\n\"\210 B\262 \266A\266\202\202\304\210\211\237\266\204\266\205\207" [ebdb-default-record-class ebdb-message-mail-as-name ebdb-message-clean-name-function cl-struct-ebdb-record-cache-tags ebdb-add-name ebdb-silent eql organization ebdb-record-organization ebdb-message-search nil functionp t create update "" query y-or-n-p format "%s is not in the EBDB. Add? " make-instance ebdb-db-add-record ebdb-prompt-for-db run-hook-with-args ebdb-create-hook ebdb-change-hook slot-value cache type-of signal wrong-type-argument ebdb-record-cache 1 ebdb-record-change-name compare-strings 0 ebdb-record-search ebdb-field-name string-match message "name mismatch: \"%s\" changed to \"%s\"" sit-for "Change name \"%s\" to \"%s\"? " "Assign name \"%s\" to address \"%s\"? " ebdb-record-one-mail object-of-class-p ebdb-record-person member-ignore-case 2 "Keep name \"%s\" as an AKA? " ebdb-record-insert-field name aka "Make \"%s\" an alternate for \"%s\"? " ebdb-parse 5 ebdb-mail-redundant-re "%s: redundant mail `%s'" ebdb-string "Ignore redundant mail %s? " (error) "???" mail "%s: new address `%s'" ebdb-add-aka ebdb-ignore-redundant-mails case-fold-search ebdb-default-mail-class ebdb-add-mails "Add address \"%s\" to %s? " (t create) "Create a new record for %s? " ebdb-record-mail "redundant mail%s %s" "s" ebdb-concat "%s: %s" "Delete %s? " "%s: deleting %s" "created %s's record with address \"%s\"" "created record with naked address \"%s\"" ebdb-init-record ebdb-after-change-hook "noticed \"%s\"" "noticed %s's address \"%s\"" "noticed naked address \"%s\"" ebdb-notice-mail-hook] 42 (#$ . 36807)]) (byte-code "\300\301\302\211\211\303%\210\304\305\306\305\307\302#\310#\210\300\305\302\211\211\311%\210\304\312\306\312\313\302#\314#\210\300\312\302\211\211\315%\207" [cl-generic-define-method ebdb-mua-prepare-article nil #[0 "\300\207" [t] 1 "Do whatever preparations are necessary to work on records\n associated with the current message.\n\nDispatches on the value of major-mode."] defalias ebdb-mua-article-body cl-generic-define (major-mode) "Return the text of the current MUA article, as a string.\n\nThis method should NOT return the message headers, only the\narticle text. This is typically used for snarfing.\n\n(fn MAJOR-MODE)" #[0 "\300\207" [nil] 1 "Default version returns nil."] ebdb-mua-article-signature (major-mode) "Return the text of the signature of the current article.\n\n(fn MAJOR-MODE)" #[0 "\300\207" [nil] 1 "Default version returns nil."]] 6) #@455 Update all records associated with the message under point. When HEADER-CLASS is present, only update records for addresses found in that header. When ALL is non-nil, behave as if `ebdb-message-all-addresses' was non-nil. This command is meant for manually updating records when `ebdb-mua-auto-update-p' is nil: it behaves as if that option were set to 'query. The rules of `ebdb-select-message' still apply, however. (fn &optional HEADER-CLASS ALL) (defalias 'ebdb-mua-update-records #[512 "\204\303 \210\211\206\f \n\304\305 \210\306\307!\310\311#\262\211\203*\312\304\211\313 %\210)\207" [ebdb-record-tracker ebdb-message-all-addresses ebdb-mua-default-formatter ebdb-load nil ebdb-mua-prepare-article ebdb-update-records ebdb-get-address-components query t ebdb-display-records ebdb-popup-window] 11 (#$ . 43388) nil]) #@454 Display the EBDB record(s) for the addresses in this message. This looks into the headers of a message according to HEADER-CLASS. Then for the mail addresses found the corresponding EBDB records are displayed. Records are not created or updated. HEADER-CLASS is defined in `ebdb-message-headers'. If it is nil, use all classes in `ebdb-message-headers'. If ALL is non-nil, bind `ebdb-message-all-addresses' to ALL. (fn &optional HEADER-CLASS ALL) (defalias 'ebdb-mua-display-records #[512 "\211\206 \302\303 \210\304\305!\306\307#\262\211\203#\310\302\211\311 %\210)\207" [ebdb-message-all-addresses ebdb-mua-default-formatter nil ebdb-mua-prepare-article ebdb-update-records ebdb-get-address-components existing t ebdb-display-records ebdb-popup-window] 11 (#$ . 44234) nil]) #@60 Display the EBDB record(s) for the sender of this message. (defalias 'ebdb-mua-display-sender #[0 "\300\301!\207" [ebdb-mua-display-records sender] 2 (#$ . 45034) nil]) #@64 Display the EBDB record(s) for the recipients of this message. (defalias 'ebdb-mua-display-recipients #[0 "\300\301!\207" [ebdb-mua-display-records recipients] 2 (#$ . 45209) nil]) #@63 Display the EBDB record(s) for all addresses in this message. (defalias 'ebdb-mua-display-all-records #[0 "\300\301\302\"\207" [ebdb-mua-display-records nil t] 3 (#$ . 45396) nil]) #@58 Display EBDB records for all recipients of this message. (defalias 'ebdb-mua-display-all-recipients #[0 "\300\301\302\"\207" [ebdb-mua-display-records recipients t] 3 (#$ . 45583) nil]) #@261 From an MUA, temporarily move point to the corresponding EBDB buffer. All further operations will take place within the EBDB buffer as per normal, with the exception that "q" will return point to where it was in the MUA, rather than quitting the EBDB buffer. (defalias 'ebdb-mua-in-ebdb-buffer #[0 "\300\301 !\302 \303 \304 \305\306!!\203\306!\202\307\310\311 #\312 \313\314\315\316\317\320\321\f\f\f#\322\"\323\324\211&#\210\325\310\"\210\326\327\"\207" [get-buffer ebdb-make-buffer-name current-window-configuration selected-window window-point window-live-p get-buffer-window ebdb-pop-up-window t ebdb-popup-window make-sparse-keymap define-key "q" make-byte-code 0 "\303\301!\205\f\304\300!\210\302b\207" vconcat vector [window-live-p set-window-configuration] 2 nil select-window set-transient-map #[0 "\300 \206\n\301 \302\232?\207" [minibufferp this-command-keys-vector [113]] 2]] 17 (#$ . 45776) nil]) #@152 Toggle format of all records without leaving MUA. See the docstring of `ebdb-toglge-records-format' for use of the prefix arg ARG. (fn &optional ARG) (defalias 'ebdb-mua-toggle-records-format #[256 "\301\302 !\211\205r\211q\210\205\303\")\207" [ebdb-records get-buffer ebdb-make-buffer-name ebdb-toggle-records-format] 5 (#$ . 46710) "p"]) #@64 Edit the notes field of the EBDB record of the message sender. (defalias 'ebdb-mua-edit-sender-notes #[0 "\302 \210\303\304\305!\306\"\307\205\312\211\203\304\211@\3101\260\3111\231\312\313\"\314!>\2040\315\316\317D\"\210\211\320H\262\211\203F\211@\321!\210A\266\202\2025\210\322\323\"\210\324\325\"\262\203^\326\"\210\202h\327 !\262\330\"\210\322\331\"\210\332 \211\203\213\211@r\211q\210\333\334!\203\203\335\336!\210)A\266\202\202o\210\337\340\333\334!?#00\202\2740\211A@\341!\210\342\343\"\210\344\345!\262\262\202\274\342\346A@\"\210\344\345!\262\210A\266\202\202\210\337\340\336#\207" [cl-struct-ebdb-record-cache-tags ebdb-default-notes-class ebdb-mua-prepare-article ebdb-update-records ebdb-get-address-components sender existing nil (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-record-field notes ebdb-record-change-field ebdb-read ebdb-record-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"] 9 (#$ . 47064) nil]) #@430 Snarf the body of the current article. This snarfs all available record information in the article, first attempting to associate it with the senders and recipients of the article, afterwards prompting for the creation of new records. In addition, if a signature is present, snarf it and attempt at associate field information in it with the article sender. With a prefix arg ARG, only snarf the signature. (fn &optional ARG) (defalias 'ebdb-mua-snarf-article #[256 "\300 \210\3011N\302\303 \304\"\302\303\305!\304\"\306 \307 \310\311\205$\312\313\211\314%\2056?\2056\312\313\211\n\314%\"!\211\203G\315\313\314\313\316 %\202J\317\320!\266\2050\207\210\317\321!\207" [ebdb-mua-prepare-article (cl-no-applicable-method) ebdb-update-records ebdb-get-address-components existing sender ebdb-mua-article-body ebdb-mua-article-signature delete-dups append ebdb-snarf nil t ebdb-display-records ebdb-popup-window message "No snarfable data found" "Article snarfing doesn't work in this context."] 14 (#$ . 48339) "P"]) #@211 Prompt for an *EBDB* buffer, and CC all records displayed in that buffer. The primary mail of each of the records currently listed in the chosen buffer will be appended to the CC: field of the current buffer. (defalias 'ebdb-mua-yank-cc #[0 "\301\302\303\304\305\306\307\310 \"\"\"!\311Crq\210\312\311\304\313\314\315\316\317!\320\"\321\322%\"\")\323\324\325\"\203J\211\205M\323\324!\203>\326 \210\202A\327 \210\330\331\332#c\202M\333\334!\207" [ebdb-records get-buffer completing-read "Yank from buffer: " mapcar buffer-name seq-filter #[257 "r\211q\210\300\301!)\207" [derived-mode-p ebdb-mode] 3 "\n\n(fn B)"] buffer-list nil delq make-byte-code 257 "\300\301@!\240\205\302@\300\242\"\207" vconcat vector [ebdb-record-one-mail ebdb-dwim-mail] 4 "\n\n(fn X)" derived-mode-p message-mode mail-mode message-goto-cc mail-cc mapconcat identity ", " message "Not in a mail composition buffer"] 11 (#$ . 49377) nil]) #@815 Update EBDB automatically based on incoming and outgoing messages. This looks into the headers of a message according to HEADER-CLASS. Then for the mail addresses found the corresponding EBDB records are updated. UPDATE-P determines whether only existing EBDB records are taken or whether also new records are created for these mail addresses. Return matching records. UPDATE-P may take the same values as `ebdb-mua-auto-update-p' or any of the MUA-specific equivalents. If UPDATE-P is nil, use `ebdb-mua-auto-update-p' (which see). HEADER-CLASS is defined in `ebdb-message-headers'. If it is nil, use all classes in `ebdb-message-headers'. If `ebdb-mua-pop-up' is non-nil, EBDB pops up the *EBDB* buffer along with the MUA window(s), displaying the matching records. (fn &optional UPDATE-P HEADER-CLASS) (defalias 'ebdb-mua-auto-update #[512 "\305\306 \204\n\307 \210\310\311!\206\n\"\262 \203-\211\203*\312\f\306\211\313 %\210\202-\314 \210)\211\207" [ebdb-silent-internal ebdb-record-tracker ebdb-mua-auto-update-p ebdb-mua-pop-up ebdb-mua-default-formatter t nil ebdb-load ebdb-update-records ebdb-get-address-components ebdb-display-records ebdb-popup-window ebdb-undisplay-records] 9 (#$ . 50312)]) #@133 Common keymap for calling EBDB commands in an MUA. Keys have been chosen assuming that the keymap will be bound to ";" in the MUA. (defvar ebdb-mua-keymap (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\211\207" [make-sparse-keymap define-key ";" ebdb-mua-display-all-records ":" ebdb-mua-update-records "'" ebdb-mua-edit-sender-notes "\"" ebdb-mua-in-ebdb-buffer "s" ebdb-mua-snarf-article "t" ebdb-mua-toggle-records-format] 5) (#$ . 51544)) #@756 Unify mail ADDRESS displayed for a message in the MUA Summary buffer. Typically ADDRESS refers to the value of the From header of a message. If ADDRESS matches a record in EBDB display a unified name instead of ADDRESS in the MUA Summary buffer. Unification uses `ebdb-mua-summary-unification-list' (see there). The first match in this list becomes the text string displayed for a message in the MUA Summary buffer instead of ADDRESS. If variable `ebdb-mua-summary-mark' is non-nil use it to precede known addresses. Return the unified mail address. Currently this works with Gnus and VM. It requires the EBDB insinuation of these MUAs. Also, the MUA Summary format string must use `ebdb-mua-summary-unify-format-letter' (see there). (fn ADDRESS) (defalias 'ebdb-mua-summary-unify #[257 "\302!\211@A@\303\"@\304\211\211A\262\242\211\262\203`\305=\203&\202T\306=\2030\202T\307=\203;\202T\205T\310\"\211:\204N\311!\202R\311@!\262\262\211\203\304\262\202\312\313 \204j\314\202\203\204r\315\202\203\310\316\"\242\206\203\317!\206\203 \206\227\206\227\206\227\n\206\227\320#\207" [ebdb-mua-summary-unification-list ebdb-mua-summary-mark ebdb-extract-address-components ebdb-message-search nil message-name message-mail message-address ebdb-record-field ebdb-string format "%s%s" "" " " ebdb-field-summary-mark ebdb-mua-make-summary-mark "**UNKNOWN**"] 13 (#$ . 52074)]) #@280 In the MUA Summary buffer mark messages matching a EBDB record. ADDRESS typically refers to the value of the From header of a message. If ADDRESS matches a record in EBDB return a mark, " " otherwise. The mark itself is the value of option `ebdb-mua-summary-mark'. (fn ADDRESS) (defalias 'ebdb-mua-summary-mark #[257 "\204\301\207\302!\303@A@\"@\211\203'\304\305\"\242\206(\306!\206(\202(\307\207" [ebdb-mua-summary-mark "" ebdb-extract-address-components ebdb-message-search ebdb-record-field ebdb-field-summary-mark ebdb-mua-make-summary-mark " "] 6 (#$ . 53512)]) (provide 'ebdb-mua)