;ELC   
;;; Compiled by nelhage@localhost.localdomain on Tue Dec 13 12:19:24 2005
;;; from file /home/nelhage/Desktop/bbdb-2.34/lisp/bbdb-com.el
;;; in Emacs version 22.0.50.7
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`bbdb-com.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\300\302!\210\300\303\304!\203 \305\202 \306!\210\307\310!\203# \311\310M\210\202' \311\312M\210\300\207" [require bbdb cl locate-library "mailabbrev" mailabbrev mail-abbrevs boundp auto-fill-function bbdb-auto-fill-function auto-fill-hook] 3)
#@47 *Default country to use if none is specified.
(custom-declare-variable 'bbdb-default-country ''"Emacs" '(#$ . -868) :group 'bbdb-record-creation :type 'string)
(defalias 'bbdb-grovel-elide-arg '(macro . #[(arg) "\301\302\303\304ED\305F\207" [arg if not eq 0 bbdb-display-layout] 6]))
(defalias 'bbdb-search '(macro . #[(records &optional name company net notes phone) "\306	;\204 	9\204 \307\310!\210\n;\204 \n9\204 \307\311!\210;\204, 9\204, \307\312!\210\f;\204: \f9\204: \307\313!\210;\204H 9\204H \307\314!\210\203n \315\316\317\320\321\322\323\324\325\326BB\327BBBE\323\324\325\330BBEF\331BBBB\f\203\301 \317\332\fD\325\f\333BB\317\334\335\fD\336BB\315\337\317\340\321\341\323\342\343\324\344\342\325\345\fD\346BBE\347BBBBBE\323\324\325\345\fD\350BBEF\351BBB\325\345\fD\352\353\354\335\fDE\355BBEFFB	\203\343 \356\325	\357BB\315\360\321\361\323\324\325	\362BB\363BBBE\364BBBD\"\203	\315\365\317\366\321\367\323\324\325\370BB\371BBBE\323\324\325\372BBEF\373BBBB\n\203\325\n\374BBB\315\375\356\f\205\376\377\201@ @D\201A BB\"B\321\201@ \201B \317\352)B\201C BB\201D BBBB\201E BBB\207" [clauses name company net notes phone nil error "name must be atomic" "company must be atomic" "net must be atomic" "notes must be atomic" "phone must be atomic" let ((rest-of-phones (bbdb-record-phones record)) (done nil)) if rest-of-phones while (and rest-of-phones (not done)) setq done string-match ((bbdb-phone-string (car rest-of-phones))) (rest-of-phones (cdr rest-of-phones)) ("") (done) stringp ((or (bbdb-record-notes record) "")) eq car ('*) ((fields all-fields) done tmp) (bbdb-record-raw-notes record) (and (not done) fields) tmp (bbdb-record-getprop record (car fields)) and cdr (tmp) (fields (cdr fields)) ("") (done) or bbdb-record-getprop record ("") append ((or (bbdb-record-name record) "")) ((rest-of-aka (bbdb-record-aka record)) (done nil)) (and rest-of-aka (not done)) ((car rest-of-aka)) (rest-of-aka (cdr rest-of-aka)) (done) ((rest-of-nets (bbdb-record-net record)) (done nil)) rest-of-nets (and rest-of-nets (not done)) ((car rest-of-nets)) (rest-of-nets (cdr rest-of-nets)) ("") (done) ((or (bbdb-record-company record) "")) (matches 'nil) ((all-fields (cons 'notes (mapcar (lambda (x) (intern (car x))) (bbdb-propnames))))) (case-fold-search bbdb-case-fold-search) records (record) (setq record (car records)) ((setq matches (cons record matches))) ((setq records (cdr records))) ((nreverse matches))] 20]))
#@119 Display all entries in the BBDB matching the regexp STRING
in either the name(s), company, network address, or notes.
(defalias 'bbdb #[(string elidep) "\203 \306=?\202\f 	\307\nB\310\311\303\312\313r\314 q\210\f\205& \315\316\317!!! \212\320\213+\"B!\321 \311\"#$%&#\203C#@\"\322\n\"\323H\206Q \324\"\2043\"\325H\311'\211(\203\200 (\203\206 '\204\206 \322\n(@\"'(A\211(\204g \202\206 \322\n\326\"''*\2043\322\n\327\"!\206\226 \330\"\2043\"\331H\311'\211)\203\275 '\204\275 \322\n)@\"')A\211)\204\247 '*\2043;\203\326 \322\332\"!\206\322 \333\"\2020@\307=\203\"%\311\211*'+\"\334H\203'\204+\203\335\"+@\"\211*\205\322A*\"'+A+\202\356 \322A\336\"''+\2020\322A\335\"@\"\206/\337\"\203:\"&B&#A\211#\204B &\237-!*\207" [elidep bbdb-display-layout string notes bbdb-debug bbdb-file 0 * bbdb-display-records nil mapcar #[(x) "\301@!\207" [x intern] 2] bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) bbdb-records string-match 3 "" 6 "" bbdb-record-name "" 2 bbdb-record-notes "" 7 bbdb-record-getprop "" "" w bbdb-case-fold-search record records case-fold-search all-fields matches done rest-of-nets rest-of-aka tmp fields] 10 (#$ . 3334) "sRegular Expression for General Search: \nP"])
#@98 Display all entries in the BBDB matching the regexp STRING in the name
(or ``alternate'' names).
(defalias 'bbdb-name #[(string elidep) "\203 \306=?\202\f 	\307\310\n\311 \310\f\203c \f@\312\313!\206) \314\"\204V \315H\310\211\203P \204P \312@\"A\211\2049 *\203\\ B\fA\211\204 \237,!)\207" [elidep bbdb-display-layout bbdb-case-fold-search record records case-fold-search 0 bbdb-display-records nil bbdb-records string-match bbdb-record-name "" 2 matches string done rest-of-aka] 6 (#$ . 4688) "sRegular Expression for Name Search: \nP"])
#@67 Display all entries in BBDB matching STRING in the company field.
(defalias 'bbdb-company #[(string elidep) "\203 \306=?\202\f 	\307\310\n\311 \310\f\203: \f@\312\313H\206) \314\"\2033 B\fA\211\204 \237,!)\207" [elidep bbdb-display-layout bbdb-case-fold-search record records case-fold-search 0 bbdb-display-records nil bbdb-records string-match 3 "" matches string] 6 (#$ . 5274) "sRegular Expression for Company Search: \nP"])
#@76 Display all entries in BBDB matching regexp STRING in the network address.
(defalias 'bbdb-net #[(string elidep) "\203 \306=?\202\f 	\307\310\n\311 \310\f\203d \f@\211\312H\310\211\203J \203Q \204Q \313@\"A\211\2040 \202Q \313\314\"*\203] B\fA\211\204 \237,!)\207" [elidep bbdb-display-layout bbdb-case-fold-search record records case-fold-search 0 bbdb-display-records nil bbdb-records 6 string-match "" matches done rest-of-nets string] 6 (#$ . 5731) "sRegular Expression for Net Address Search: \nP"])
#@71 Display all entries in BBDB matching STRING in the named notes field.
(defalias 'bbdb-notes #[(which string elidep) "\203 \306=?\202\f 	\n\307\230\203 \310B\202 \311\n!B\312\313\304\314\315r\316 q\210\2055 \317\320\321!!!\212\322\213+\"B\323 \313 !\"\203\326 @\f;\203i \324\f\325!\206e \326\"\202\303 \f@\310=\203\265 !\313\211#$%\327H\203\250 $\204\257 %\203\257 \330%@\"\211#\205\236 \324\fA#\"$%A%\202\201 \324\fA\331\"$$+\202\303 \324\fA\330\f@\"\206\302 \332\"\203\315 \"B\"A\211\204Q \"\237-!*\207" [elidep bbdb-display-layout which string notes bbdb-debug 0 "" * intern bbdb-display-records nil mapcar #[(x) "\301@!\207" [x intern] 2] bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) bbdb-records string-match bbdb-record-notes "" 7 bbdb-record-getprop "" "" bbdb-file w bbdb-case-fold-search record records case-fold-search all-fields matches tmp done fields] 10 (#$ . 6285) (list (completing-read "Notes field to search (RET for all): " (append '(("notes")) (bbdb-propnames)) nil t) (if (featurep 'gmhist) (read-with-history-in 'bbdb-notes-field "Regular expression: ") (read-string "Regular Expression: ")) current-prefix-arg)])
#@77 Display all entries in BBDB matching the regexp STRING in the phones field.
(defalias 'bbdb-phones #[(string elidep) "\203 \306=?\202\f 	\307\310\n\311 \310\f\203f \f@\211\312H\310\211\203L \203S \204S \313\314@!\"A\211\2040 \202S \313\315\"*\203_ B\fA\211\204 \237,!)\207" [elidep bbdb-display-layout bbdb-case-fold-search record records case-fold-search 0 bbdb-display-records nil bbdb-records 4 string-match bbdb-phone-string "" matches done rest-of-phones string] 6 (#$ . 7569) "sRegular Expression for Phone Search: \nP"])
#@101 Display all entries in the bbdb database which have been changed since
the database was last saved.
(defalias 'bbdb-changed #[(elidep) "\203 \305=?\202\f 	\306r\307 q\210\n\205 \310\311\312!!!\212\313\213+!)\207" [elidep bbdb-display-layout bbdb-debug bbdb-file w 0 bbdb-display-records bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-changed-records select-window] 2))] 5 (#$ . 8147) "P"])
#@75 Prompts for and displays a single record (this is faster than searching.)
(defalias 'bbdb-display #[(records) "\301!\207" [records bbdb-display-records] 2 (#$ . 8601) (list (bbdb-completing-read-record "Display record of: "))])
#@222 Display records according to FUNCTION.  FUNCTION is called with one
argument, the record, and should return nil if the record is not to be
displayed.  If the record is to be displayed, it (the record) should
be returned.
(defalias 'bbdb-display-some #[(function) "\301\302\303\304\305 \"\"!\207" [function bbdb-display-records delq nil mapcar bbdb-records] 6 (#$ . 8837)])
#@130 Regrinds the contents of the *BBDB* buffer, without scrolling.
If possible, you should call `bbdb-redisplay-one-record' instead.
(defalias 'bbdb-redisplay-records #[nil "`\304\305\306\217\307 b\210`\310!\210\nb\210\203 \311!\210)\312\313!\210	b\210\212\314\315!+\207" [m p p2 bbdb-records nil (mark) ((error)) window-start bbdb-display-records-1 set-mark recenter 0 run-hooks bbdb-list-hook] 4 (#$ . 9218)])
#@77 Regrind one record.  The *BBDB* buffer must be current when this is called.
(defalias 'bbdb-redisplay-one-record #[(record &optional record-cons next-record-cons delete-p) "\203 \306\n??\307H\310H??=\204 \311\312!\210)\f\204! \236\204- \f>A@\313 \210\314\f8\3148\315\203V \306\f\204L \311\316!\210\204U \311\317!\210)b\210\n\204f \320\f@\fA@\"\210`\206m d|\210b\210\212\321\322!,\207" [bbdb-debug debug-on-error delete-p record record-cons bbdb-records t 8 3 error "splorch." beginning-of-line 2 nil "doubleplus ungood: record unexists!" "doubleplus ungood: marker unexists!" bbdb-format-record run-hooks bbdb-list-hook next-record-cons buffer-read-only next-marker marker] 3 (#$ . 9639)])
(byte-code "\301B\304\305!\210\302B\306\307!\210\303B\310\311!\210\312B\313\314	\n\315\260!\210\316B\317\320	\n\321R!\210\322B\323\324\n\325R!\210\326B\327\330\n\331Q!\210\332B\333\334\335Q!\207" [current-load-list bbdb-phone-area-regexp bbdb-phone-main-regexp bbdb-phone-ext-regexp (lambda (#1=#:defconst-tmp-var) (defconst bbdb-phone-area-regexp #1#)) "(?[ 	]*\\+?1?[ 	]*[-(]?[ 	]*[-(]?[ 	]*\\([2-9][0-9][0-9]\\)[ 	]*)?[- /.	]*" (lambda (#2=#:defconst-tmp-var) (defconst bbdb-phone-main-regexp #2#)) "\\([2-9][0-9][0-9]\\)[ 	]*-?[ .	]*\\([0-9][0-9][0-9][0-9]\\)[ 	]*" (lambda (#3=#:defconst-tmp-var) (defconst bbdb-phone-ext-regexp #3#)) "x?[ 	]*\\([0-9]+\\)[ 	]*" bbdb-phone-regexp-1 (lambda (#4=#:defconst-tmp-var) (defconst bbdb-phone-regexp-1 #4#)) "^[ 	]*" "$" bbdb-phone-regexp-2 (lambda (#5=#:defconst-tmp-var) (defconst bbdb-phone-regexp-2 #5#)) "^[ 	]*" "$" bbdb-phone-regexp-3 (lambda (#6=#:defconst-tmp-var) (defconst bbdb-phone-regexp-3 #6#)) "^[ 	]*" "$" bbdb-phone-regexp-4 (lambda (#7=#:defconst-tmp-var) (defconst bbdb-phone-regexp-4 #7#)) "^[ 	]*" "$" bbdb-phone-regexp-5 (lambda (#8=#:defconst-tmp-var) (defconst bbdb-phone-regexp-5 #8#)) "^[ 	]*" "$"] 6)
#@1379 Parse a phone number from STRING and return a list of integers the form
(area-code exchange number) or (area-code exchange number extension).
This is both lenient and strict in what it will parse - whitespace may
appear (or not) between any of the groups of digits, parentheses around the
area code are optional, as is a dash between the exchange and number, and
a '1' preceeding the area code; but there must be three digits in the area
code and exchange, and four in the number (if they are present).  An error
will be signalled if unparsable.  All of these are unambigously parsable:

( 415 ) 555 - 1212 x123   -> (415 555 1212 123)
(415)555-1212 123         -> (415 555 1212 123)
(1-415) 555-1212 123      -> (415 555 1212 123)
1 (415)-555-1212 123      -> (415 555 1212 123)
555-1212 123              -> (0 555 1212 123)
555 1212                  -> (0 555 1212)
415 555 1212              -> (415 555 1212)
1 415 555 1212            -> (415 555 1212)
5551212                   -> (0 555 1212)
4155551212                -> (415 555 1212)
4155551212123             -> (415 555 1212 123)
5551212x123               -> (0 555 1212 123)
1234                      -> (0 0 0 1234)

Note that "4151212123" is ambiguous; it could be interpreted either as
"(415) 121-2123" or as "415-1212 x123".

(And uh, oh yeah, this does little if `bbdb-north-american-phone-numbers-p'
is nil...)
(defalias 'bbdb-parse-phone-number #[(string &optional number-type) "\203\n \306=\202\f 	?\2037 \n\307\310\n\"\203 \n\311\225\312O\307\313\n\"\203+ \n\311\211\224O\314\311\nG\312\n$\210\n)C\207\307\n\"\203` \315\n\316\224\316\225O!\315\n\317\224\317\225O!\315\n\320\224\320\225O!\315\n\321\224\321\225O!F\207\307\f\n\"\203\201 \315\n\316\224\316\225O!\315\n\317\224\317\225O!\315\n\320\224\320\225O!E\207\307\n\"\203\243 \311\315\n\316\224\316\225O!\315\n\317\224\317\225O!\315\n\320\224\320\225O!F\207\307\n\"\203\276 \311\315\n\316\224\316\225O!\315\n\317\224\317\225O!E\207\307\n\"\203\323 \311\211\211\315\n\316\224\316\225O!F\207\322\323!\207" [number-type bbdb-north-american-phone-numbers-p string bbdb-phone-regexp-1 bbdb-phone-regexp-2 bbdb-phone-regexp-3 euro string-match "\\`[ 	\n]+" 0 nil "[ 	\n]+\\'" set-text-properties string-to-int 1 2 3 4 error "phone number unparsable." bbdb-phone-regexp-4 bbdb-phone-regexp-5] 7 (#$ . 11564)])
#@58 If non-nil, expand mail aliases in `bbdb-complete-name'.
(custom-declare-variable 'bbdb-expand-mail-aliases 't '(#$ . 13908) :group 'bbdb-record-use :type 'boolean)
#@147 If non-nil, require legal zip codes when entering an address.
The format of legal zip codes is determined by the variable
`bbdb-legal-zip-codes'.
(custom-declare-variable 'bbdb-check-zip-codes-p 't '(#$ . 14080) :group 'bbdb-record-creation :type 'boolean)
#@123 List of regexps that match legal zip codes.
Whether this is used at all depends on the variable `bbdb-check-zip-codes-p'.
(custom-declare-variable 'bbdb-legal-zip-codes ''("^$" "^[ 	\n]*[0-9][0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[ 	\n]*$" "^[ 	\n]*\\([0-9][0-9][0-9][0-9][0-9]\\)[ 	\n]*-?[ 	\n]*\\([0-9][0-9][0-9][0-9]?\\)[ 	\n]*$" "^[ 	\n]*\\([A-Za-z0-9]+\\)[ 	\n]+\\([A-Za-z0-9]+\\)[ 	\n]*$" "^[ 	\n]*\\([A-Z]+\\)[ 	\n]*-?[ 	\n]*\\([0-9]+ ?[A-Z]*\\)[ 	\n]*$" "^[ 	\n]*\\([A-Z]+\\)[ 	\n]*-?[ 	\n]*\\([0-9]+\\)[ 	\n]+\\([0-9]+\\)[ 	\n]*$") '(#$ . 14344) :group 'bbdb-record-creation :type '(repeat regexp))
#@96 Check whether STRING is a legal zip code.
Do this only if `bbdb-check-zip-codes-p' is non-nil.
(defalias 'bbdb-parse-zip-string #[(string) "\203 \303\304\305	\">\204 \306\307!\207\n\207" [bbdb-check-zip-codes-p bbdb-legal-zip-codes string t mapcar #[(regexp) "\302	\"??\207" [regexp string string-match] 3] error "not a valid zip code."] 4 (#$ . 14949)])
#@172 Prompt for and return a completely new BBDB record.
Doesn't insert it in to the database or update the hashtables, but does
ensure that there will not be name collisions.
(defalias 'bbdb-read-new-record #[nil "\306 \210\203 \307\310!\210\311\211\312\313\215\210\314\315!\316\314\317!\320\"\311\211\211\211\314\321!\211\322\230\204U \323 \311\"\324\f\"\210\203K \311B\241\210A\202% \311B\211\202% ,\311\211\211\314\325!\211\326\230\204\243 \312\327\215!\330\331\f!G\332U\203\200 !\333\244\202\202 !#\"\203\227 \"\311B\241\210A\202\237 \"\311B\211*\202_ +\314\334!#$%&\211'\335\230\203\274 \311'#\336\230\203\306 \311#\331\n	\311'$%&#\323(\311\"&	.\207" [bbdb-readonly-p lastname firstname addr str L-tail bbdb-records error "The Insidious Big Brother Database is read-only." nil --bbdb-error-retry-- (byte-code "\300\301\302\217\210\202  " [--c-- (byte-code "\306\307\203 \310\311!\310\312!\202 \313\310\314!!\211@A@)	\315\230\203' \316\n\317\230\203/ \316\f\205x \320	G\321U\203? \n\202N \nG\321U\203J 	\202N 	\322\nQ\227r\323 q\210\205` \324\325\326!!!\212\327\213+\"J\205x \330\331	\206r \332\n\206w \333#\"\207" [current-prefix-arg firstname lastname names bbdb-no-duplicates-p bbdb-debug throw --bbdb-error-retry-- bbdb-read-string "First Name: " "Last Name: " bbdb-divide-name "Name: " "" nil "" intern-soft 0 " " bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) error "%s %s is already in the database" "" "" bbdb-file w] 9) ((error (byte-code "\302 \210\303\304	\305\"\210\306\307!\210)\305\207" [cursor-in-echo-area --c-- ding t bbdb-display-error nil sit-for 2] 3)))] 3) bbdb-read-string "Company: " bbdb-split "Network Address: " "," "Address Description [RET when no more addrs]: " "" make-vector bbdb-record-edit-address "Phone Location [RET when no more phones]: " "" (byte-code "\300\301\302\217\210\202  " [--c-- (byte-code "\301\302\303\304\305\250\205 \306\307\"\"!\"\207" [bbdb-default-area-code throw --bbdb-error-retry-- bbdb-parse-phone-number read-string "Phone: " format "(%03d) "] 8) ((error (byte-code "\302 \210\303\304	\305\"\210\306\307!\210)\305\207" [cursor-in-echo-area --c-- ding t bbdb-display-error nil sit-for 2] 3)))] 3) apply vector 3 (0) "Additional Comments: " "" "" L bbdb-address-length phonelist phone notes phones addrs net company bbdb-cache-length] 13 (#$ . 15315)])
#@249 Add a new entry to the bbdb database; prompts for all relevant info
using the echo area, inserts the new record in the db, sorted alphabetically,
and offers to save the db file.  DO NOT call this from a program.  Call
bbdb-create-internal instead.
(defalias 'bbdb-create #[(record) "\301\302\"\210\303\304\"\210\305C!\207" [record bbdb-invoke-hook bbdb-create-hook bbdb-change-record t bbdb-display-records] 3 (#$ . 17832) (list (bbdb-read-new-record))])
(defalias 'bbdb-check-type '(macro . #[(place predicate) "\302\303	DD	\242\304=\203 \305	A@\306	8E\2029 	\242\307=\203' \310	A@D\2029 	\242\311=\2036 \312	A@D\2029 \313	D\314\315\316\317D	EEC\244E\207" [predicate place while not aref aset 2 car setcar cdr setcdr setq signal 'wrong-type-argument list quote] 8]))
#@817 Adds a record to the database; this function does a fair amount of
error-checking on the passed in values, so it's safe to call this from
other programs.

NAME is a string, the name of the person to add.  An error is signalled
if that name is already in use and `bbdb-no-duplicates-p' is t.
COMPANY is a string or nil.
NET is a comma-separated list of email addresses, or a list of strings.
An error is signalled if that name is already in use.
ADDRS is a list of address objects.  An address is a vector of the form
["location" ("line1" "line2" ... ) "City" "State" "Zip" "Country"].
PHONES is a list of phone-number objects.  A phone-number is a vector of
the form
["location" areacode prefix suffix extension-or-nil]
or
["location" "phone-number"]
NOTES is a string, or an alist associating symbols with strings.
(defalias 'bbdb-create-internal #[(name company net addrs phones notes) "\306\211\211\205 \307!\211@A@\310\nG\311U\203! 	\2020 	G\311U\203, \n\2020 \n\312	Q\227r\313 q\210\f\205A \314\315\316!!!&\212\317\213+\"J\203g '\203g \320\321\322\323\n\206Z \324	\206_ \325#C\"\211\202 (\203 (;\204 \320\326\327(D\"\211(\202n );\203\214 \330)\331\")'\203\324 )\211*\203\323 \310*@\227r\313 q\210\f\205\256 \314\315\316!!!&\212\332\213+\"J\203\312 *\320\321\322\333*@\"C\"\240\210\202\231 *A\211*\204\231 )\334\335+\"+\334\336,\",-;\204\357 \334\337-\"-\340\n	(,+)-\341.\306\"&	/\342\343/\"\210\344/\345\"\210/,\207" [aka lastname firstname name bbdb-debug bbdb-file nil bbdb-divide-name intern-soft 0 " " bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) signal error format "%s %s is already in the database" "" "" wrong-type-argument stringp bbdb-split "," ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) "%s is already in the database" mapcar #[(addr) "\302!\203 G	U\204 \303\304\302D\"\202  \305H;\204- \305\303\304\306\305HD\"I\210\202 \307H<\204C \307\303\304\310\307HD\"I\210\202- \311H;\204Y \311\303\304\306\311HD\"I\210\202C \312H;\204o \312\303\304\306\312HD\"I\210\202Y \313H;\204\205 \313\303\304\306\313HD\"I\210\202o \314H;\204\233 \314\303\304\306\314HD\"I\210\202\205 \207" [addr bbdb-address-length vectorp signal wrong-type-argument 0 stringp 1 listp 2 3 4 5] 7] #[(phone) "\302!\203 G\303U\204 G	U\204 \304\305\302D\"\202  \306H;\2044 \306\304\305\307\306HD\"I\210\202 G\303U\203Q \310H;\204\274 \310\304\305\307\310HD\"I\210\202; \310H\250\204g \310\304\305\311\310HD\"I\210\202Q \303H\250\204} \303\304\305\311\303HD\"I\210\202g \312H\250\204\223 \312\304\305\311\312HD\"I\210\202} \313H\203\257 \313H\250\204\257 \313\304\305\311\313HD\"I\210\202\231 \313H\306=\203\274 \313\314I\210\207" [phone bbdb-phone-length vectorp 2 signal wrong-type-argument 0 stringp 1 integerp 3 4 nil] 7] #[(note) ":\204 \301\302\303D\"\211\202 @9\204# \301\302\304@D\"\240\210\202 A:\2030 @A@BA;\204C \301\302\305AD\"\241\210\2020 \207" [note signal wrong-type-argument consp symbolp stringp] 6] vector make-vector bbdb-invoke-hook bbdb-create-hook bbdb-change-record t w bbdb-no-duplicates-p company net rest addrs phones notes bbdb-cache-length record] 13 (#$ . 18613)])
#@73 Returns the record which the point is point at.  In linear time, man...
(defalias 'bbdb-current-record #[(&optional planning-on-modifying) "\203\f 	\203\f \306\307!\210\n\310p!\232\204 \306\311\n\"\210`\312\fA\203? \f\204? \313A@8\fV\2038 @@A\211\202! \f\206F @@+\207" [planning-on-modifying bbdb-readonly-p bbdb-buffer-name bbdb-records rec rest error "The Insidious Big Brother Database is read-only." buffer-name "this command only works while in the \"%s\" buffer." nil 2 p] 4 (#$ . 22005)])
(defalias 'bbdb-record-get-field-internal #[(record field) "\302=\203\n \303	!\207\304=\203 	\305H\207\306=\203 	\307H\207\310=\203( 	\311H\207\312=\2032 	\313H\207\314=\203< 	\315H\207\316\317\"\207" [field record name bbdb-record-name net 6 aka 2 phone 4 address 5 property 7 error "doubleplus ungood: unknown field type %s"] 3])
(defalias 'bbdb-record-store-field-internal #[(record field value) "\303=\203\n \304\305!\207\306=\203 	\307\nI\207\310=\203  	\311\nI\207\312=\203+ 	\313\nI\207\314=\2036 	\315\nI\207\316=\203A 	\317\nI\207\304\320\"\207" [field record value name error "doesn't work on names" net 6 aka 2 phone 4 address 5 property 7 "doubleplus ungood: unknown field type %s"] 3])
(defalias 'bbdb-record-edit-field-internal #[(record field &optional which location) "\304=\203\n \305	!\207\306=\203 \307	!\207\310=\203 \311	!\207\312=\203( \313	!\207\314=\2033 \315\n\"\207\316=\203> \317\n\"\207\320=\203J \321	\n@\"\207\322\323\"\207" [field record which location name bbdb-record-edit-name company bbdb-record-edit-company net bbdb-record-edit-net aka bbdb-record-edit-aka phone bbdb-record-edit-phone address bbdb-record-edit-address property bbdb-record-edit-property error "doubleplus ungood: unknown field type %s"] 3])
(defalias 'bbdb-current-field #[(&optional planning-on-modifying) "\301!\204\n \302\303!\210\304`\305\"\207" [planning-on-modifying bbdb-current-record error "unperson" get-text-property bbdb-field] 3])
#@212 Typing \<bbdb-mode-map>\[bbdb-apply-next-command-to-all-records] in the *BBDB* buffer makes the next command operate on all
of the records currently displayed.  (Note that this only works for
certain commands.)
(defalias 'bbdb-apply-next-command-to-all-records #[nil "\304\305\306!!\210\n\307\207" [current-prefix-arg prefix-arg this-command last-command message substitute-command-keys "\\<bbdb-mode-map>\\[bbdb-apply-next-command-to-all-records] - " nil] 3 (#$ . 24000) nil])
#@72 Whether the last command was `bbdb-apply-next-command-to-all-records'.
(defalias 'bbdb-do-all-records-p '(macro . #[nil "\300\207" [(eq last-command 'bbdb-apply-next-command-to-all-records)] 1 (#$ . 24487)]))
#@931 Add a new field to the current record; the field type and contents
are prompted for if not supplied.

If you are inserting a new phone-number field, you can control whether
it is a north american or european phone number by providing a prefix
argument.  A prefix arg of ^U means it's to be a euronumber, and any
other prefix arg means it's to be a a structured north american number.
Otherwise, which style is used is controlled by the variable
`bbdb-north-american-phone-numbers-p'.

If you are inserting a new net address, you can have BBDB append a
default domain to any net address that does not contain one.  Set
`bbdb-default-domain' to a string such as "mycompany.com" (or,
depending on your environment, (getenv "DOMAINNAME")), and
"@mycompany.com" will be appended to an address that is entered as
just a username.  A prefix arg of ^U (or a `bbdb-default-domain'
value of "", the default) means do not alter the address.
(defalias 'bbdb-insert-new-field #[(name contents) "\204 \306	!\307\310!\211\204 \311\312!\210	\313=\203' \n\314\n\314HC\244I\210\202\366	\315=\203: \n\316\n\316HC\244I\210\202\366	\317=\203\347 \n\320H\203J \311\321!\210;\203T \322\323\"\203\243 \211\203\242 \324\f@\227r\325 q\210\205s \326\327\3304!!!5\212\331\213+\"J\2116\203\232 6\n=\204\232 \311\332\f@\3336!\206\230 6\320H@#\210)\fA\211\204^ )\211\203\336 \334\f@\227r\325 q\210\205\276 \326\327\3304!!!5\212\335\213+\"\2117\n\3367!\205\323 7JBL\210)\fA\211\204\251 )\n\320I\210\202\366	\337=\203\235\n\340H\203\367 \311\341!\210;\203\322\342\"\203U\211\203T\324@\227r\325 q\210\205\"\326\327\3304!!!5\212\343\213+\"J\2116\203J6\n=\204J\311\344@\3336!\206H6\320H@#\210)A\211\204\f)\211\203\224\334@\227r\325 q\210\205r\326\327\3304!!!5\212\345\213+\"\2117\n\3367!\205\2077JBL\210)A\211\204\\)\n\340I\210\202\366	\346=\203\265\347\n!\203\255\311\350!\210\351\n\"\210\202\366\352\353	!r\325 q\210\205\312\326\327\3304!!!5\212\354\213+\"\203\361\n\355H:\203\350	\n\355H\236\203\350\311\356	\"\210\357\n	#\210\202\366\311\360	\"\210\361\n\362\"\210\3628\363\n!*\207" [contents name record bbdb-no-duplicates-p nets bbdb-debug bbdb-prompt-for-new-field-value bbdb-current-record t error "current record unexists!" phone 4 address 5 net 6 "There already are net addresses!" bbdb-split "," intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) "net address \"%s\" is used by \"%s\"" bbdb-record-name intern ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) boundp aka 2 "there already are alternate names!" ";" ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) "alternate name \"%s\" is used by \"%s\"" ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) notes bbdb-record-notes "there already are notes!" bbdb-record-set-notes assoc symbol-name ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) 7 "there is already a \"%s\" note!" bbdb-record-putprop "doubleplus ungood: unknow how to set slot %s" bbdb-change-record nil bbdb-redisplay-one-record bbdb-file w old sym bbdb-display-layout] 7 (#$ . 24703) (let ((name "") (completion-ignore-case t)) (while (string= name "") (setq name (downcase (completing-read "Insert Field: " (append '(("phone") ("address") ("net") ("AKA") ("notes")) (bbdb-propnames)) nil nil nil)))) (setq name (intern name)) (list name (bbdb-prompt-for-new-field-value name)))])
(defalias 'bbdb-prompt-for-new-field-value #[(name) "\306=\2032 \307\310!\311\312	\"\203 	\313\225\314O\n\314=\204( \204( \311\315	\"\203, 	\2020 	\316\nQ)\207\317=\203< \307\320!\207\321=\203\200 \322\203L \247\202M \f\203T \202U \323\313\"\211+\313\314I\210+\324+GU\205u ,\250\203t ,\202u \313I\210\325+!\210+)\207\326=\203\226 \322-\314\".\327.!\210.)\207\330=\203\240 \307\331!\207\332\333!r\334 q\210/\205\266 \335\336\3370!!!1\212\340\213+\"\203\307 \307\341\342\"!\207\343\341\344\"!\203\365 \345\346r\334 q\210/\205\344 \335\336\3370!!!1\212\347\213+\333!CC\"!\210\202\372 \350\351\"\210\307\341\352\"!\207" [name n bbdb-default-domain current-prefix-arg bbdb-north-american-phone-numbers-p bbdb-phone-length net bbdb-read-string "Net: " string-match "^mailto:" 0 nil "[@%!]" "@" aka "Alternate Names: " phone make-vector 2 1 bbdb-record-edit-phone address bbdb-record-edit-address notes "Notes: " assoc symbol-name bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) format "%s: " bbdb-y-or-n-p "\"%s\" is an unknown field name.  Define it? " bbdb-set-propnames append ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) error "unknown field \"%s\"" "%s: " p bbdb-default-area-code bbdb-address-length a bbdb-debug bbdb-file w] 7])
#@78 Programmatically add a new field called NAME. Returns the list of propnames.
(defalias 'bbdb-add-new-field #[(name) "\305\306!\307\310r\311 q\210	\205 \312\313\314\n!!!\212\315\213+\"\"\203\" \f\207\316\307r\311 q\210	\2054 \312\313\314\n!!!\212\317\213+\306!CC\"!\207" [name bbdb-debug bbdb-file w bbdb-propnames assoc symbol-name append (("phone") ("address") ("net") ("AKA") ("notes")) bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) bbdb-set-propnames ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2))] 8 (#$ . 29793)])
#@299 Edit the contents of the Insidious Big Brother Database field displayed on
the current line (this is only meaningful in the "*BBDB*" buffer.)   If the
cursor is in the middle of a multi-line field, such as an address or comments
section, then the entire field is edited, not just the current line.
(defalias 'bbdb-edit-current-field #[nil "\303\304!\305\304!\306	\204 \307\310!\210\311\312	#\313\n\"\210\314!+\207" [record field need-to-sort bbdb-current-record t bbdb-current-field nil error "on an unfield" apply bbdb-record-edit-field-internal bbdb-change-record bbdb-redisplay-one-record] 4 (#$ . 30432) nil])
(defalias 'bbdb-record-edit-name #[(bbdb-record) "\306\211\211\211\211\211\307\310\215\210\311\312\313H\"\211\314\230\203  \306\n\2069 \203- \227\202. \315\313H\2066 \316\227\232?\317!\313H\211 G\320V\203| \321 \227r\322 q\210!\205c \323\324\325\"!!!#\212\326\213+\"\211$\203{ $\327$J\"L\210)G\320V\203\263 \321\227r\322 q\210!\205\232 \323\324\325\"!!!#\212\330\213+\"\211$\203\262 $\327$J\"L\210)*\331H\320\306I\210\320I\210\332\fI\210\313I\210\204\326 \f\203\333\317!\227r\322 q\210!\205\356 \323\324\325\"!!!#\212\334\213+\"\211%\335%!\205%JBL\210)\n.\207" [old-name new-name need-to-sort co ln fn nil --bbdb-error-retry-- (byte-code "\300\301\302\217\210\202  " [--c-- (byte-code "\306\307\203 \310\311	\312H\"\310\313	\314H\"\202( \315\310\316\317	!\"!\211@\fA@)\n	\312H\2060 \320\230?\206? 	\314H\206= \321\230?\n\322\230\203H \323\324\230\203P \323\n\203_ \203_ \n\325Q\202d \n\206d \317	! \205\253 \205\253 \205\201 \227\227\230?\205\253 \326\227r\327 q\210!\205\233 \330\331\332\"!!!#\212\333\213+\"J\205\253 \334\335\"\"\207" [current-prefix-arg bbdb-record fn ln names need-to-sort throw --bbdb-error-retry-- bbdb-read-string "First Name: " 0 "Last Name: " 1 bbdb-divide-name "Name: " bbdb-record-name "" "" "" nil "" " " intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) error "%s is already in the database!" new-name old-name bbdb-no-duplicates-p bbdb-debug bbdb-file w] 9) ((error (byte-code "\302 \210\303\304	\305\"\210\306\307!\210)\305\207" [cursor-in-echo-area --c-- ding t bbdb-display-error nil sit-for 2] 3)))] 3) bbdb-read-string "Company: " 3 "" "" "" bbdb-record-name 0 intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) bbdb-remove! ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) 8 1 intern ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) boundp bbdb-record company name bbdb-debug bbdb-file w s sym] 7])
(defalias 'bbdb-record-edit-company #[(bbdb-record) "\306\307\310H\"\311\211\312\230\203 \311	\206) \n\203 \n\227\202 \313\310H\206& \314\227\232?\315!\310H\211G\316V\203e \317\f\227r\320 q\210\205M \321\322\323!!!\212\324\213+\"\211\203d \325J\"L\210)G\316V\203\230 \317\227r\320 q\210\205\200 \321\322\323!!!\212\326\213+\"\211\203\227 \325J\"L\210)*\310\nI\210\327\315!\227r\320 q\210\205\264 \321\322\323!!!\212\330\213+\"\211\331!\205\311 JBL\210)	*\207" [bbdb-record need-to-sort co company name bbdb-debug bbdb-read-string "Company: " 3 nil "" "" "" bbdb-record-name 0 intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) bbdb-remove! ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) intern ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) boundp bbdb-file w s sym] 7])
#@437 Function to use for address editing.
The sub-fields are queried using the default order and using the
default names.  Set `bbdb-address-editing-function' to an alternate
address editing function if you don't like this function.  It is
mostly used for US style addresses.

The sub-fields and the prompts used are:
Street, line n:  (nth n street)
City:            city
State:           state
Zip Code:        zip
Country:         country
(defalias 'bbdb-address-edit-default #[(addr) "\306\211\307\310\311\312T\"\313H8\"\211\314\230\204% \315\n	C\"T\202 \n+\310\316\317H\"\310\320\321H\"\322\323\215\310\324\325H\206F \"\313\fI\210\317I\210\321I\210\326I\210\327\330\f\331#\260\332\230\203z \325\333I\210\202\200 \325I\210-\306\207" [n s l addr str cty nil 0 bbdb-read-string format "Street, line %d: " 1 "" append "City: " 2 "State: " 3 --bbdb-error-retry-- (byte-code "\300\301\302\217\210\202  " [--c-- (byte-code "\301\302\303\304\305\306H\"!\"\207" [addr throw --bbdb-error-retry-- bbdb-parse-zip-string bbdb-read-string "Zip Code: " 4] 7) ((error (byte-code "\302 \210\303\304	\305\"\210\306\307!\210)\305\207" [cursor-in-echo-area --c-- ding t bbdb-display-error nil sit-for 2] 3)))] 3) "Country: " 5 4 mapconcat identity "" "" "Emacs" ste zip bbdb-default-country country] 8 (#$ . 34454)])
#@241 Function to use for address editing.
The function must accept a BBDB address as parameter and allow the
user to edit it.  This variable is called from `bbdb-record-edit-address'.
The default value is the symbol `bbdb-address-edit-default'.
(custom-declare-variable 'bbdb-address-editing-function ''bbdb-address-edit-default '(#$ . 35804) :group 'bbdb-record-creation :type 'function)
#@207 Edit an address ADDR.
If optional parameter LOCATION is nil, edit the location sub-field
of the address as well.  The address itself is edited using the editing
function in `bbdb-address-editing-function'.
(defalias 'bbdb-record-edit-address #[(addr &optional location) "\206 \304\305	\306H\206 \307\310!\311\312\313\314!\"#	\306\nI\210)	!\207" [location addr loc bbdb-address-editing-function bbdb-read-string "Location: " 0 bbdb-label-completion-default "addresses" mapcar #[(x) "C\207" [x] 1] bbdb-label-completion-list "addresses"] 7 (#$ . 36195)])
(defalias 'bbdb-record-edit-phone #[(phone-number &optional location) "\206 \306\307	\310H\206 \311\312!\313\314\315\316!\"#	G\nU\317\320\215)	\310I\210	\321\f@I\210	G\322U\204L 	\322\fA@I\210	\323\322\f8I\210	\324\323\f8\206J \310I\210*\325\207" [location phone-number bbdb-phone-length bbdb-north-american-phone-numbers-p newp newl bbdb-read-string "Location: " 0 bbdb-label-completion-default "phones" mapcar #[(x) "C\207" [x] 1] bbdb-label-completion-list "phones" --bbdb-error-retry-- (byte-code "\300\301\302\217\210\202  " [--c-- (byte-code "\301\302\303\304\305\306!\"!\"\207" [phone-number throw --bbdb-error-retry-- bbdb-parse-phone-number read-string "Phone: " bbdb-phone-string] 7) ((error (byte-code "\302 \210\303\304	\305\"\210\306\307!\210)\305\207" [cursor-in-echo-area --c-- ding t bbdb-display-error nil sit-for 2] 3)))] 3) 1 2 3 4 nil] 7])
(defalias 'bbdb-record-edit-net #[(bbdb-record) "\306\307\310\311\312H\313#\"\312H\314	\315\"\f\203\\ \n\211\203[ \316@\227r\317 q\210\2054 \320\321\322!!!\212\323\213+\"J\211 \203S  =\204S \324\325@\326 !#\210)A\211\204 )\211\203\227 \316@\227r\317 q\210\205x \320\321\322!!!\212\327\213+\"\211!\203\217 !\330!J\"L\210)A\211\204b )\n\211\"\203\330 \331\"@\227r\317 q\210\205\266 \320\321\322!!!\212\332\213+\"\211#\333#!\205\313 #JBL\210)\"A\211\"\204\237 )\312\nI\210+\334\207" [bbdb-record str newnets oldnets bbdb-no-duplicates-p rest bbdb-read-string "Net: " mapconcat identity 6 ", " bbdb-split "," intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) error "net address \"%s\" is used by \"%s\"" bbdb-record-name ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) bbdb-remove! intern ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) boundp nil bbdb-debug bbdb-file w old s nets sym] 7])
(defalias 'bbdb-record-edit-aka #[(bbdb-record) "\306\307\310\311\312H\313#\"\312H\314	\315\"\f\203\\ \n\211\203[ \316@\227r\317 q\210\2054 \320\321\322!!!\212\323\213+\"J\211 \203S  =\204S \324\325@\326 !#\210)A\211\204 )\211\203\227 \316@\227r\317 q\210\205x \320\321\322!!!\212\327\213+\"\211!\203\217 !\330!J\"L\210)A\211\204b )\n\211\"\203\330 \331\"@\227r\317 q\210\205\266 \320\321\322!!!\212\332\213+\"\211#\333#!\205\313 #JBL\210)\"A\211\"\204\237 )\312\nI\210+\334\207" [bbdb-record str newaka oldaka bbdb-no-duplicates-p rest bbdb-read-string "AKA: " mapconcat identity 2 "; " bbdb-split ";" intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) error "alternate name address \"%s\" is used by \"%s\"" bbdb-record-name ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) bbdb-remove! intern ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) boundp nil bbdb-debug bbdb-file w old s aka sym] 7])
(defalias 'bbdb-record-edit-notes #[(bbdb-record &optional regrind) "\304\305\306!\"\307	\310\230?\205 	\"\210)\n\203! \212q\210\311!\210)\312\207" [bbdb-record notes regrind bbdb-buffer-name bbdb-read-string "Notes: " bbdb-record-notes bbdb-record-set-notes "" bbdb-redisplay-one-record nil] 4 nil (list (bbdb-current-record t) t)])
(defalias 'bbdb-record-edit-property #[(bbdb-record &optional prop regrind) "r\306 q\210\205 \307\310\311	!!!\212\312\213+\f\203  \313\f!\202+ \314\315\316\317!\"\320B\"\f\206@ \321\232\203< \322\202@ \323!\324\315\325\"\326\"\"\327\330\230?\205^ #\210,\203p \212q\210\331!\210)\332\207" [bbdb-debug bbdb-file w propnames prop bbdb-record bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) symbol-name completing-read format "Edit property of %s: " bbdb-record-name ("notes") "" notes intern bbdb-read-string "%s: " bbdb-record-getprop bbdb-record-putprop "" bbdb-redisplay-one-record nil propname propsym string regrind bbdb-buffer-name] 5 nil (list (bbdb-current-record t) nil t)])
(defalias 'bbdb-field-equal #[(x y) ":\203& 	:\203& @	@=\205) A@	A@=\205) AA@	AA@=\207	=\207" [x y] 2])
(put 'bbdb-field-equal 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'bbdb-next-field #[(&optional count planning-on-modifying) "\204 \306\307 \210\310	!\311	!\n\312W\203 \313\202  \306\312\312W\203. [\203\235 \203\235 W\203\235 \211:\203r :\203r @@=\205w A@A@=\205w AA@AA@=\202w =*\203\223 y\210\310	!\311	!\f\n=\204= \314\211\202> T\2022 .\207" [count planning-on-modifying record field next-record next-field 1 beginning-of-line bbdb-current-record bbdb-current-field 0 -1 nil signum i y x] 3])
#@591 This is like the `transpose-lines' command, but it is for BBDB fields.
If the cursor is on a field of a BBDB record, that field and the previous
field will be transposed.

With argument ARG, takes previous line and moves it past ARG fields.
With argument 0, interchanges field point is in with field mark is in.

Both fields must be in the same record, and must be of the same basic type
(that is, you can use this command to change the order in which phone-number
fields are listed, but you can't use it to make an address appear before a
phone number; the order of field types is fixed.)
(defalias 'bbdb-transpose-fields #[(&optional arg) "\306\307!\310\211\211\211\211\211 \311U\204< \312\313\307\"\206\" \314\315!\312 \307\"\312 \311W\2035 \313\2026 \316\307\"\202V \307\317 \212\320 b\210\317 \306 =\204U \314\321!\210) \311W\203i \f!!\322y\210)@\f\204x \204x \314\323!\210	\f@=\204\231 	@=\204\231 \314\324	\211\f@=\203\225 @\202\227 \f@#\210	\f@=\204\242 \310	@=\204\253 \310A@\fA@A@	\325>\203\305 \314\326	\"\210\202\331 	\327>\203\324 \330	\"\202\331 \314\331	\"\210\n\203\211\"\203\n\"@=\203\364 \"\f\240\210\202\"@\f=\203\"\240\210\"A\211\"\204\344 )\202R@=\203\332\"B\202R\211\"\2037\f\"@=\2047\"A\211\"\204&\"\204@\314\333!\210\307#\332\"\"\"AB\241\210*\334	#\210\335\310\"\210\336!.\207" [list type swap-p position-before position-after moving-field bbdb-current-record t nil 0 bbdb-next-field -1 error "no previous field" 1 bbdb-current-field mark "not in the same record" 2 "that would be out of the record!" "can't transpose fields of different types (%s and %s)" (name aka net) "there is only one %s field, so you can't transpose it" (phone address property) bbdb-record-get-field-internal "doubleplus ungood: unknown field %s" delq "doubleplus ungood: couldn't reorder list" bbdb-record-store-field-internal bbdb-change-record bbdb-redisplay-one-record record arg x rest inhibit-quit] 8 (#$ . 41827) "p"])
#@233 Delete the line which the cursor is on; actually, delete the field which
that line represents from the database.  If the cursor is on the first line
of a database entry (the name/company line) then the entire entry will be
deleted.
(defalias 'bbdb-delete-current-field-or-record #[(&optional records noprompt) "\306\307!\211@\310\204 \311\312!\202% 	\313=\203\" \314A@@!\202% \314	!\f\205\333 \f@	\303=\203; \315\n\"\210\202\323 \204K \316\317\320\321\n!#!\203\323 	\322>\203b \323\n	\324A@\325\n	\"\"#\210\202\312 	\326>\203\264 \325\n	\"\211\"\203\252 \327\"@\227r\330 q\210#\205\211 \331\332\333$!!!%\212\334\213+\"\211&\203\240 &\335\n&J\"L\210)\"A\211\"\204r )\323\n	\310#\210\202\312 	\313=\203\306 \336\nA@@\310#\210\202\312 \311\337!\210\340\n\310\"\210\341\n!\210\fA\211\204* \310,\207" [field type record name records noprompt bbdb-current-field t nil error "on an unfield" property symbol-name bbdb-delete-current-record bbdb-y-or-n-p format "delete this %s field (of %s)? " bbdb-record-name (phone address) bbdb-record-store-field-internal delq bbdb-record-get-field-internal (net aka) intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) bbdb-remove! bbdb-record-putprop "doubleplus ungood: unknown field type" bbdb-change-record bbdb-redisplay-one-record rest bbdb-debug bbdb-file w s] 9 (#$ . 43852) (list (if (bbdb-do-all-records-p) (mapcar 'car bbdb-records) (list (bbdb-current-record))) current-prefix-arg)])
#@67 Delete the entire bbdb database entry which the cursor is within.
(defalias 'bbdb-delete-current-record #[(r &optional noprompt) "\204 \306\307\310\311	!\206 	\312H\206 	\313H@\"!\205\225 	\n\236\211\n>A@\203: \314	\315H\312H\2039 \316\317!\210)	\315H\312\314I\210\320	!\210\n@=\203R \nA\202w \n\211A\203v A@=\203m \211AA\241\210\321A\211\202V )\322	\f\314$\210r\323 q\210\205\217 \324\325\326!!!\212\327\213-\207" [noprompt r bbdb-records record-cons next-record-cons bbdb-debug bbdb-y-or-n-p format "delete the entire db entry of %s? " bbdb-record-name 3 6 t 8 error "deleting deleted record" bbdb-delete-record-internal nil bbdb-redisplay-one-record bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \303!\210\304	\n\"\211\207" [w r bbdb-changed-records select-window delq] 3)) debug-on-error rest bbdb-file w] 6 (#$ . 45433) (list (bbdb-current-record t))])
(defalias 'bbdb-change-records-state-and-redisplay #[(desired-state records) "\303	\205$ 	@\nA@=\204 A\n\240\210\304@\"\210	A\211\204 \303)\207" [rec records desired-state nil bbdb-redisplay-one-record] 4])
#@116 Show all the fields of all visible records.
Like `bbdb-toggle-records-display-layout' but for all visible records.
(defalias 'bbdb-toggle-all-records-display-layout #[(arg &optional records) "\204 	\306 \211	\236\211A@\307\310\311\312\"\"\206 \313\f\"\314=\2030 \315\202X \f\2048 \316\202X >A\204L \211@@)\202X >\211A@)@\317\"-\207" [records bbdb-records record cons current-state bbdb-display-layout-alist bbdb-current-record delete nil mapcar #[(l) "\301\302\"\205 \301\302\"A\205 \207" [l assoc toggle] 3] assoc 0 one-line multi-line bbdb-change-records-state-and-redisplay layout-alist desired-state arg x] 6 (#$ . 46573) "P"])
#@820 Toggle whether the current record is displayed expanded or elided
(multi-line or one-line display.)  With a numeric argument of 0, the
current record will unconditionally be made elided; with any other argument,
the current record will unconditionally be shown expanded.
\<bbdb-mode-map>
If "\[bbdb-apply-next-command-to-all-records]\[bbdb-toggle-records-display-layout]" is used instead of simply "\[bbdb-toggle-records-display-layout]", then the state of all records will
be changed instead of just the one at point.  In this case, an argument
of 0 means that all records will unconditionally be made elided; any other
numeric argument means that all of the records will unconditionally be shown
expanded; and no numeric argument means that the records are made to be in
the opposite state of the record under point.
(defalias 'bbdb-toggle-records-display-layout #[(arg) "\303	\304=?\205 \305 \n\236C\"\207" [arg last-command bbdb-records bbdb-toggle-all-records-display-layout bbdb-apply-next-command-to-all-records bbdb-current-record] 4 (#$ . 47253) "P"])
#@112 Show all the fields of all currently displayed records.
The display layout `full-multi-line' is used for this.
(defalias 'bbdb-display-all-records-completely #[(arg &optional records) "\204 	\306 \211	\236\211A@\211\307=\204 \307\202 \310\311\",\207" [records bbdb-records record cons current-state desired-state bbdb-current-record full-multi-line multi-line bbdb-change-records-state-and-redisplay] 4 (#$ . 48323) "P"])
#@99 Show all the fields of the current record.
The display layout `full-multi-line' is used for this.
(defalias 'bbdb-display-record-completely #[(arg) "\303	\304=?\205 \305 \n\236C\"\207" [arg last-command bbdb-records bbdb-display-all-records-completely bbdb-apply-next-command-to-all-records bbdb-current-record] 4 (#$ . 48762) "P"])
#@163 Remove the current record from the display without deleting it from the
database.  With a prefix argument, omit the next N records.  If negative,
omit backwards.
(defalias 'bbdb-omit-record #[(n) "\306U\204\205 \306W\203 \307\310!\210\311 \206 \312\313!\n\314\211\314\203E @@	=\203; @A@\314\211\202# A\211\204& 	\204M \312\315!\210\314\316\f8\203] \3168\202^ d|\210)\203p \211AA\241\210\202s \nA\306V\203~ S\202\200 T-\202  \317\nG!\207" [n record bbdb-records rest cons next 0 bbdb-prev-record 1 bbdb-current-record error "no records" nil "can't find current record" 2 bbdb-frob-mode-line prev-tail buffer-read-only] 4 (#$ . 49104) "p"])
#@69 *An alist defining specific merging function, based on notes field.
(custom-declare-variable 'bbdb-refile-notes-generate-alist ''((creation-date . bbdb-refile-notes-string-least) (timestamp . bbdb-refile-notes-string-most)) '(#$ . -49784) :group 'bbdb-noticing-records :type '(repeat (cons (symbol :tag "Notes filed") (hook :tag "Generating function"))))
#@165 *Default function to use for merging BBDB notes records.

If the note field has an entry in `bbdb-refile-notes-generate-alist',
that function will be used instead.
(custom-declare-variable 'bbdb-refile-notes-default-merge-function ''bbdb-refile-notes-default-merge-function '(#$ . -50146) :group 'bbdb-noticing-records :type 'function)
#@50 Returns the concatenation of STRING1 and STRING2
(defalias 'bbdb-refile-notes-default-merge-function #[(string1 string2) "\302	Q\207" [string1 string2 "\n"] 3 (#$ . 50488)])
#@62 Concatenate STRING1 and STRING2, but remove duplicate lines.
(defalias 'bbdb-refile-notes-remove-duplicates #[(string1 string2) "\304\305\"\304	\306\"\n\203! \n@\235\204 \n@B\nA\211\204 \307\310\311#*\207" [string1 string2 note2 note1 split-string "\n" "\n" mapconcat identity "\n"] 5 (#$ . 50669)])
#@35 Returns the string that is lessp.
(defalias 'bbdb-refile-notes-string-least #[(string1 string2) "	\231\203 \207	\207" [string1 string2] 2 (#$ . 50985)])
#@39 Returns the string that is not lessp.
(defalias 'bbdb-refile-notes-string-most #[(string1 string2) "	\231\203 	\207\207" [string1 string2] 2 (#$ . 51147)])
#@194 Merge two lists l1 l2 (modifies l1) only adds elements from l2
if cmp returns false for all elements of l1.  If optional mod
is provided it is applied to each element of l1 and l2 prior to cmp
(defalias 'bbdb-merge-lists! #[(l1 l2 cmp &optional mod) "\204 	\207\306!	\n\203 \307\n\"\202 \310\311\"\f\203m \311\n\203- \n\f@!\202/ \f@\f\f\203W \f@\"\203N \311\f\312\2025 \fA\211\f\204: \204f \f@\311B\241\210A\fA+\202 +\207" [l1 l2 mod chk src2 end last mapcar append nil t val src1 fail cmp] 6 (#$ . 51313)])
#@472 Merge the contents of old-record into new-record, old-record
remains unchanged.  For name and company it queries about which to use
if they differ.  All other fields are concatenated.  Idealy this would
be better about checking for duplicate entries in other fields, as
well as possibly querying about differing values.

This function does nothing to ensure the integrity of the rest of the
database, that is somebody elses problem (something like
`bbdb-refile-record').
(defalias 'bbdb-merge-records #[(old-record new-record) "\203\n 	=\203 \306\307!\210\310!\311H\310	!	\311H	\312H	\313H\314G\315U\203= \315H\316HB\202\226 G\315U\203O 	\315H	\316HB\202\226 \227\227\230\203c \315H\316HB\202\226 \317\320\321#!\203{ 	\315H	\316HB\202\204 	\315H\316HB \203\224 \317\320\322\310\n!\"!\204\226 \314G\315U\203\242 \202\313 G\315U\203\256 \202\313 \230\203\272 \202\313 \317\320\323#!\203\311 \202\313 !\"\n\203\331 \310\n!B\324\325\324H	\324H\326#I\210\327\325\327H	\327H\326#I\210\311!I\210\330H	\330H\314#$\211%$\232\204m%<\204\331%BC%$<\204'\331$BC$$\203g$@@%\236\211#\203U#$@@&\236A\206H'#A$@A\"\241\210\202^%$@C\244%$A\211$\204,\330%I\210+\315\"@I\210\316\"AI\210\332H\315\314I\210\312\325\312H\f\333\334$I\210\313\325\313H\333\334$I\210.	\207" [new-record old-record extra-name old-aka old-nets old-co error "those are the same" bbdb-record-name 3 6 2 nil 0 1 bbdb-y-or-n-p format "Use name \"%s\" instead of \"%s\"? " "Keep \"%s\" as an alternate name? " "Use company \"%s\" instead of \"%s\"? " 4 bbdb-merge-lists! equal 5 7 notes 8 string= downcase old-name new-co new-name bbdb-use-alternate-names comp name tmp n2 n1 bbdb-refile-notes-generate-alist bbdb-refile-notes-default-merge-function] 8 (#$ . 51863)])
#@584 Merge the current record into some other record; that is, delete the
record under point after copying all of the data within it into some other
record.  this is useful if you realize that somehow a redundant record has
gotten into the database, and you want to merge it with another.

If both records have names and/or companies, you are asked which to use.
Phone numbers, addresses, and network addresses are simply concatenated.
The first record is the record under the point; the second is prompted for.
Completion behaviour is as dictated by the variable `bbdb-completion-type'.
(defalias 'bbdb-refile-record #[(old-record new-record) "\203\n 	=\203 \306\307!\210\310	\"\311	\312\"\210\313\314\"\210\315\236\203) \316!\210r\317 q\210\f\2059 \320\321\322!!!\212\323\213\210+\204I \324C!\210)\325\326!\207" [new-record old-record bbdb-display-layout bbdb-records bbdb-debug bbdb-file error "those are the same" bbdb-merge-records bbdb-delete-current-record noprompt bbdb-change-record t nil bbdb-redisplay-one-record bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \303!\210	\n>\204 	\nB\303\207" [w new-record bbdb-changed-records select-window] 2)) bbdb-display-records message "records merged." w] 4 (#$ . 53700) (let ((r (bbdb-current-record)) name) (setq name (bbdb-record-name r)) (list r (if current-prefix-arg (car (delq r (bbdb-search (bbdb-records) name nil))) (bbdb-completing-read-one-record (format "merge record \"%s\" into: " (or (bbdb-record-name r) (car (bbdb-record-net r)) "???")) (list r)))))])
#@220 *The order for sorting the notes.
If a note is not in the alist, it is assigned weight 100, so all notes
with weights less then 100 will be in the beginning, and all notes with
weights more than 100 will be in the end.
(custom-declare-variable 'bbdb-notes-sort-order ''((notes . 0) (www . 1) (ftp . 2) (gopher . 3) (telnet . 4) (mail-alias . 5) (mail-folder . 6) (lpr . 7) (creation-date . 1000) (timestamp . 1001)) '(#$ . -55267) :group 'bbdb-noticing-records :type 'list)
#@103 Sort the notes in the record according to `bbdb-notes-sort-order'.
Can be used in `bbdb-change-hook'.
(defalias 'bbdb-sort-notes #[(rec) "\303\304!\211\205\n \304K\305\216\304\306M\210\n\307\310\n\307H\311\"I+\207" [#1=#:--cl-letf-bound-- #2=#:--cl-letf-save-- rec fboundp kk ((byte-code "\203 \302	M\210\202 \303\302!\210\302\207" [#1# #2# kk fmakunbound] 2)) #[(nt) "@	\236A\206	 \302\207" [nt bbdb-notes-sort-order 100] 2] 7 sort #[(aa bb) "\302!\302	!W\207" [aa bb kk] 3]] 6 (#$ . 55748)])
#@93 Sort the phones in the record according to the location.
Can be used in `bbdb-change-hook'.
(defalias 'bbdb-sort-phones #[(rec) "\301\302\301H\303\"I\207" [rec 4 sort #[(xx yy) "\302H	\302H\231\207" [xx yy 0] 3]] 5 (#$ . 56255)])
#@96 Sort the addresses in the record according to the location.
Can be used in `bbdb-change-hook'.
(defalias 'bbdb-sort-addresses #[(rec) "\301\302\301H\303\"I\207" [rec 5 sort #[(xx yy) "\302H	\302H\231\207" [xx yy 0] 3]] 5 (#$ . 56494)])
#@77 *Non-nil means always use full name when sending mail, even if same as net.
(custom-declare-variable 'bbdb-dwim-net-address-allow-redundancy 'nil '(#$ . -56739) :group 'bbdb :type '(choice (const :tag "Disallow redundancy" nil) (const :tag "Allow redundancy" t)))
#@470 Returns a string to use as the email address of the given record.  The
given address is the address the mail is destined to; this is formatted like
"Firstname Lastname <addr>" unless both the first name and last name are
constituents of the address, as in John.Doe@SomeHost, or the address is
already in the form "Name <foo>" or "foo (Name)", in which case the
address is used as-is. If `bbdb-dwim-net-address-allow-redundancy' is non-nil,
the name is always included.
(defalias 'bbdb-dwim-net-address #[(record &optional net) "\204	 	\306H@\204 \307\310!\210\311	\312\"\211\206 \313	!\314\211\315%\n\203J \316\n!\211&@&A@\f\317\232\203> \314\320\232\203F \314)\202R 	\315H	\321H\203x \322\323%#\211%\203x \315%O\324%\314OQ%\325\\%\202V \203\321 '\204\303 \f\203\253 \203\253 \322\326\327\f!\330\327!\331\260\"\204\321 \322\332\327!\333\327\f!\334\260\"\202\300 \f\204\263 \203\303 \322\335\327\f\206\273 !\336Q\"\204\321 \322\337\"\204\321 \322\340\"\203\325 \202\351 \322\341\"\203\344 \342\343#\202\351 \342\344#-\207" [net record override name fn ln 6 error "record unhas network addresses" bbdb-record-getprop mail-name bbdb-record-name nil 0 bbdb-divide-name "" "" 1 string-match "[\\\"]" "\\" 2 "\\`[^!@%]*\\b" regexp-quote "\\b[^!%@]+\\b" "\\b" "\\`[^!@%]*\\b" "\\b[^!%@]+\\b" "\\b" "\\`[^!@%]*\\b" "\\b" "\\`[ 	]*[^<]+[ 	]*<" "\\`[ 	]*[^(]+[ 	]*(" "[][ -()<>@,;:.!$%]" format "\"%s\" <%s>" "%s <%s>" i both bbdb-dwim-net-address-allow-redundancy] 7 (#$ . 57010)])
(defalias 'bbdb-send-mail-internal #[(&optional to subj records) "\2067 \304\305!\203 \306\2027 \304\307!\203 \307\2027 \304\310!\203\" \310\2027 \304\311!\203, \311\2027 \304\312!\2036 \312\2027 \313\211\306=\203U \314\315!\204I \316\315\317\"\210\315\n\320\206Q \321#\202\326 	\307=\203\202 \314\322!\204o \323\324!\210\314\322!\204o \323\325!\210\326 \210\322\327\n#\210\330\331!\210\330\332!\202\326 	\310=\203\232 \314\333!\204\223 \316\333\334\"\210\333\n\"\202\326 	\313=\204\246 	\335=\203\256 \313\327\n#\202\326 	\311=\203\306 \314\336!\204\276 \323\337!\210\336\n\327#\202\326 	\312=\203\323 \312\n\"\202\326 \340\341!)\207" [bbdb-send-mail-style type to subj featurep mh-e mh vm message mew compose-mail mail fboundp mh-send autoload "mh-e" "" "" vm-mail-internal load-library "vm" "vm-reply" vm-session-initialization nil run-hooks vm-mail-hook vm-mail-mode-hook message-mail "message" rmail mew-send "mew" error "bbdb-send-mail-style must be vm, mh, message, compose-mail, or rmail"] 5])
#@388 Compose a mail message to the person indicated by the current bbdb record.
The first (most-recently-added) address is used if there are more than one.
\<bbdb-mode-map>
If "\[bbdb-apply-next-command-to-all-records]\[bbdb-send-mail]" is used instead of simply "\[bbdb-send-mail]", then mail will be sent to all of the
folks listed in the *BBDB* buffer instead of just the person at point.
(defalias 'bbdb-send-mail #[(bbdb-record &optional subject) ":\203\n \302	\"\207\303	\"\207" [bbdb-record subject bbdb-send-mail-many bbdb-send-mail-1] 3 (#$ . 59554) (list (if (bbdb-do-all-records-p) (mapcar 'car bbdb-records) (bbdb-current-record)))])
(defalias 'bbdb-send-mail-1 #[(bbdb-record &optional subject) "\203 \303\304	\nE!\210	\204 \305\306!\207	\307H\204 \305\310!\207\311\312	!\n	C#\210\313\314\315\316#\2050 \315\207" [bbdb-inside-electric-display bbdb-record subject bbdb-electric-throw-to-execute bbdb-send-mail error "record unexists" 6 "Current record unhas a network addresses." bbdb-send-mail-internal bbdb-dwim-net-address re-search-backward "^Subject: $" nil t] 4])
(defalias 'bbdb-send-mail-many #[(records &optional subject) "\203 \306\307\310	D\nE!\210\311\211		\2032 	@\312H\203& 	@B\202+ 	@\fB	A\211\204 \313\314\315\237\316#\n#\210\f\203c db\210`\317\320\321\314\322\f\237\323#\324\261\210\325`\"\210b\210++\326\327\311\330#\205n \311\207" [bbdb-inside-electric-display records subject orec bad good bbdb-electric-throw-to-execute bbdb-send-mail quote nil 6 bbdb-send-mail-internal mapconcat #[(x) "\301!\207" [x bbdb-dwim-net-address] 2] ",\n    " "    " 70 "*** Warning: No net addresses for " #[(x) "\301!\207" [x bbdb-record-name] 2] ", " "." fill-region-as-paragraph re-search-backward "^Subject: $" t fill-column fill-prefix p] 6])
#@295 CC the people displayed in the *BBDB* buffer on this message.
The primary net-address of each of the records currently listed in the
*BBDB* buffer (whether it is visible or not) will be appended to the
CC: field of the current buffer (assuming the current buffer is a mail
composition buffer.)
(defalias 'bbdb-yank-addresses #[nil "\212q\210\303\304\305\306	\"\")eb\210\307\310\304\311#\2037 l\204W \304\210\312\313!\203. \304u\210\304\210\202 \314c\210\315 \210\202W \307\316!\210l\204W \304\210\312\317!\203Q \304u\210\304\210\202B \320c\210\315 \210\n\205r \n@c\210\nA\203j \321c\210\315 \210\nA\211\204[ \304)\207" [bbdb-buffer-name bbdb-records addrs delq nil mapcar #[(x) "@\301H\205 \302@!\207" [x 6 bbdb-dwim-net-address] 2] re-search-forward "^CC:[ 	]*" t looking-at "\n[ 	]" ",\n" indent-relative "^To:[ 	]*" "\n[ 	]" "\nCC:" ",\n"] 6 (#$ . 61350) nil])
#@73 *Display BBDB records for all recipients of the message in this buffer.
(defalias 'bbdb-show-all-recipients #[nil "\306 \307\310\311\312!\210\212\313\n!q\210	\203. \nb\210\314\315\316	@!\206\" \317\320\"\"	A\211\204 )\310\211\211\203P \321@\322\211\211$\211\203I \fBA\211\2049 \311\323!\210\324\f\325\"\326\f!.\207" [addrs fields marker record records rest bbdb-header-start ("from" "sender" "to" "cc" "bcc" "resent-from" "resent-to" "resent-cc" "resent-bcc") nil message "Searching..." marker-buffer append bbdb-split bbdb-extract-field-value "" "," bbdb-annotate-message-sender t "Sorting..." sort #[(x y) "\302!\302	!\231\207" [x y bbdb-record-sortkey] 3] bbdb-display-records] 6 (#$ . -62231) nil])
(defalias 'bbdb-completion-check-record #[(sym rec) "\306!\206 \307H\206 \310\311H\312\f\204 \313\202` \f\314>\2031 \203. \227\202/ \230	\204` \f\315=\203P \n\203P 	\204P \n@\227\230\nA\211\204? \n\203` \f\316>\203` \n@\227\230	+\207" [rec ok nets name bbdb-completion-type sym bbdb-record-name 3 "" 6 nil t (name primary-or-name name-or-primary) net (primary primary-or-name name-or-primary) bbdb-case-fold-search] 4])
#@99 For use as the third argument to `completing-read'.
Obey the semantics of `bbdb-completion-type'.
(defalias 'bbdb-completion-predicate #[(symbol) "\204 \305\207\306	!\204 \307\207\310	!	J\307\203, \n\204, \311\f@\"A\211\204 \n+\207" [bbdb-completion-type symbol ok recs sym t boundp nil symbol-name bbdb-completion-check-record] 4 (#$ . 63401)])
#@191 Prompt for and return a record from the bbdb.
Completion is done according to `bbdb-completion-type'.  If the user
just hits return, nil is returned.  Otherwise, a valid response is forced.
(defalias 'bbdb-completing-read-record #[(prompt &optional omit-records) "r\306 q\210\205 \307\310\311	!!!\212\312\213+\313\314\315\313$\211G\316U?\205- \317\"\211\205} \320!\203x J\203x J\321\211\203r @>\204i \322\323!@\"\203i @BA\211\204L *\202} \324\325\",\207" [bbdb-debug bbdb-file w ht completion-ignore-case prompt bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) t completing-read bbdb-completion-predicate 0 intern-soft boundp nil bbdb-completion-check-record symbol-name error "selecting deleted (unhashed) record \"%s\"!" string symbol ret recs omit-records] 6 (#$ . 63766)])
#@285 Prompt for and return a single record from the bbdb;
completion is done according to `bbdb-completion-type'.  If the user
just hits return, nil is returned. Otherwise, a valid response is forced.
if omit-records is non-nil it should be a list of records to dis-allow
completion with.
(defalias 'bbdb-completing-read-one-record #[(prompt &optional omit-records) "\306\307	\"!\211G\310=\203 \n@\202Q \nG\310V\203P \nG\311\211\312\n!\210\313V\203: \314!D\fBS\211\202& \315\316\317\nG\"\f\311\320\321%\322!S\n8+\202Q \311)\207" [prompt omit-records records result prompts count bbdb-remove-memq-duplicates bbdb-completing-read-record 1 nil bbdb-display-records 0 number-to-string completing-read format "Which duplicate record (1-%s): " t "1" string-to-number] 7 (#$ . 64711)])
(byte-code "\303B\304\303!\204& \305\303\306	!\307\n\310\311#\210\307\n\312\313#\210\307\n\314\313#\210\n)\"\210\303\207" [current-load-list minibuffer-local-completion-map map bbdb-read-addresses-with-completion-map default-boundp set-default copy-keymap define-key " " self-insert-command "	" bbdb-complete-name "\211"] 6)
#@71 Like `read-string', but allows `bbdb-complete-name' style completion.
(defalias 'bbdb-read-addresses-with-completion #[(prompt &optional default) "\303	\n#\207" [prompt default bbdb-read-addresses-with-completion-map read-from-minibuffer] 4 (#$ . 65833)])
(byte-code "\301B\302\301!\204 \303\301\304\"\210\304\207" [current-load-list bbdb-complete-name-saved-window-config default-boundp set-default nil] 3)
(defalias 'bbdb-complete-name-cleanup #[nil "\205 \301\302!\203 \303!\210\304\211\207" [bbdb-complete-name-saved-window-config get-buffer-window "*Completions*" set-window-configuration nil] 2])
#@174 Wrapper for `display-completion-list'.
GNU Emacs requires DATA to be in a specific format, viz. (nth 1 data) should
be a marker for the start of the region being completed.
(defalias 'bbdb-display-completion-list #[(list &optional callback data) "\304!\210	\205 \212\nq\210\305	A@!S\211)\207" [list data standard-output completion-base-size display-completion-list marker-position] 2 (#$ . 66452)])
#@91 Find the record for a name clicked in a completion buffer.
Currently only used by XEmacs.
(defalias 'bbdb-complete-clicked-name #[(event extent user-data) "@\306A@\3078\310 \210\fq\210\nb\210\n	|\210\311!c\210\312\n!,\207" [user-data end beg bbdb-complete-name-allow-cycling buffer extent nil 2 bbdb-complete-name-cleanup bbdb-extent-string bbdb-complete-name] 5 (#$ . 66860)])
(defalias 'bbdb-list-overlap #[(l1 l2) "\303\204 	\203 	@\n>\203 \304\303\202 	A\202 )\207" [ok l1 l2 nil t] 2])
(defalias 'bbdb-remove-assoc-duplicates #[(l) "\205 \301@@A\"\203 \302A!\207@\302A!B\207" [l assoc bbdb-remove-assoc-duplicates] 3])
#@127 Whether to allow cycling of email addresses when calling
`bbdb-complete-name' on a completed address in a composition buffer.
(custom-declare-variable 'bbdb-complete-name-allow-cycling 'nil '(#$ . 67518) :group 'bbdb-mua-specific :type 'boolean)
#@179 Show full expanded completion rather than partial matches.
If t then do it always; if a number then do it if the number of
completions for a specific match is below that number.
(custom-declare-variable 'bbdb-complete-name-full-completion '5 '(#$ . 67771) :group 'bbdb-mua-specific :type 'boolean)
#@56 List of functions called after a sucessful completion.
(custom-declare-variable 'bbdb-complete-name-hooks ''(ding) '(#$ . 68075) :group 'bbdb-mua-specific :type 'boolean)
#@633 Complete the user full-name or net-address before point (up to the
preceeding newline, colon, or comma, or the value of START-POS).  If
what has been typed is unique, insert an entry of the form "User Name
<net-addr>" (although see documentation for
bbdb-dwim-net-address-allow-redundancy).  If it is a valid completion
but not unique, a list of completions is displayed.

If the completion is done and `bbdb-complete-name-allow-cycling' is
true then cycle through the nets for the matching record.

When called with a prefix arg then display a list of all nets.

Completion behaviour can be controlled with `bbdb-completion-type'.
(defalias 'bbdb-complete-name #[(&optional start-pos) "`	\206 \212\306\307!\210\310\225b\210`)\211{\227\211\311\312\f\"\203& \f\310\225\313O\311\314\f\"\2033 \f\310\211\224O\315\310\fG\313\f$\210\f)r\316 q\210=\205P \317\320\321>!!!?\212\322\213+@\313A\323B\313C\324D\325@D#\211E\323=\203\214 \326@\"J\211AG\327UBE\326@\"CCA\203	B\203	F\330>\203	\313GA\203\321 A@\331HHF\332=\204\300 F\313=\204\300 H@CH\333GH\"GAAA)\202\240 GG\327U\203\341 G@E\202G\203\326G@@\"C\235\203\377 G@E\313\211G\202\343 GA\211G\204\346 )E\2041\334 \210\335\336\215\206bI\205\337 ?\205bJ\205b\340\341\"\210\342 \202bB\203XE\227\230\203X\326@\"\211KJL\313\211MN\313\211OP\313QL\203L@\331H\203X\343L@!\206o\344\227\230\203L@NBN\323QQ\204\265L@\345H\211O\203\265O@\227\230\203\254\333NL@C\"N\323Q\313\211O\202\214OA\211O\204\217Q\204\375L@\331HO\323PO\203\375O@\227\230\203\362O@M\313OP\203\350L@NB\202\360\333NL@C\"NOAO\313P\202\304LAL\313Q\202X\n|\210\346N@M\"c\210\347 \203BiRY\203B`\313ST\212\350 \210`STb\210\351\352S\323#\203A\327u\210\353c\210+U\203Q\323V\354N\323\"\210)\334 .\202bE\230\204\253\n|\210Ec\210`\355\313WXE;\203\244EX\230\204\244EX\n{\227\325@D#\211E\203\244E;\203o\n|\210Ec\210\202o\356\n!*\202b\357 \360 =\204\267\340\361!\210\3134A\203A@\211Y\331HG\313ZG\203\326G@@\"C\235\203\371\323Z\362\326G@@\"C\"C\363\364\346YG@\"\"\210GA\211G\204\321Z\204\363\364\346YG@\"\"\210AAA+\202\2724G\327U\2032\n|\2104@c\210\340\365!\202a\317\366!\204<\367 [p\370 \n\313\223\370 \313\223E\\\371\220\3724\373\\#\221\210)\357 \360 =\206a\340\374!).\n\207" [end start-pos beg typed string pattern re-search-backward "\\(\\`\\|[\n:,]\\)[ 	]*" 0 string-match "\\`[ 	\n]+" nil "[ 	\n]+\\'" set-text-properties bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) t #[(sym) "\306!\205H \307!\205 J\310\n\204F 	\203F 	@\311H\211\203@ 	@>\203. \310\2026 ?	@B>\204@ B	A\202 \n*\207" [sym recs nets yeah-yeah-this-one only-one-p all-the-completions bbdb-completion-predicate boundp nil 6] 2] try-completion intern-soft 1 (nil net) 6 net append bbdb-complete-name-cleanup bbdb-cycling-exit (byte-code "\204	 \306\307\310\"\210	\n!\211<\205} \211@@)\211@A)@\311\312!\210\2033 \227\2026 \313\203@ \227\202B \314\315\227r\316 q\210\311\310\312\"\210)\"J\310\211\203y \317@!\227\230\203p \320\321@\"\210A\211\204] ,@\211\204\210 \306\307\310\"\210\322H\211@A)@\235\211A@)\206\243 @G\323U\203\264 \306\307\312\"\202\306 |\210\324\"c\210\306\307\312\",\207" [bbdb-complete-name-allow-cycling bbdb-extract-address-components-func pattern addr x net throw bbdb-cycling-exit nil bbdb-records t "" "" intern-soft bbdb-buffer bbdb-record-name add-to-list recs 6 1 bbdb-dwim-net-address name bbdb-hashtable net-recs rec addrs this-addr beg end] 7) expand-abbrev message "completion for \"%s\" unfound." ding bbdb-record-name "" 2 bbdb-dwim-net-address bbdb-auto-fill-function beginning-of-line search-backward "," "\n   " bbdb-display-records-1 "" bbdb-complete-name selected-window minibuffer-window "Making completion list..." delete add-to-list list "" "*Completions*" current-window-configuration make-marker "*Completions*" bbdb-display-completion-list bbdb-complete-clicked-name "Making completion list...done" bbdb-debug bbdb-file w ht yeah-yeah-this-one only-one-p all-the-completions pred completion bbdb-completion-type addrs newaddrs bbdb-expand-mail-aliases bbdb-complete-name-hooks sym recs the-net match-recs lst primary matched fill-column bol p bbdb-completion-display-record bbdb-gag-messages bbdb-complete-name-allow-cycling last rec found-match bbdb-complete-name-saved-window-config arg] 6 (#$ . 68253) nil])
#@60 Insert the current contents of the *BBDB* buffer at point.
(defalias 'bbdb-yank #[nil "p	q\210\302 q\210)c\207" [b bbdb-buffer-name buffer-string] 2 (#$ . 72913) nil])
#@58 *The field which `bbdb-define-all-aliases' searches for.
(custom-declare-variable 'bbdb-define-all-aliases-field ''mail-alias '(#$ . -73089) :group 'bbdb :type 'symbol)
#@483 Define mail aliases for some of the records in the database.
Every record which has a `mail-alias' field will have a mail alias
defined for it which is the contents of that field.  If there are
multiple comma-separated words in the `mail-alias' field, then all
of those words will be defined as aliases for that person.

If multiple entries in the database have the same mail alias, then
that alias expands to a comma-separated list of the network addresses
of all of those people.
(defalias 'bbdb-define-all-aliases #[nil "\306B\307\310\311\312r\313 q\210\n\205 \314\315\316!!!\212\317\213+\"B\320 \307123452\203\267 2@1	;\203J \321	\3221!\206F \323\"\202\244 	@\324=\203\226 4\307\2116781\325H\203\211 7\204\220 8\203\220 \32618@\"\2116\205 \321	A6\"78A8\202b \321	A\327\"77+\202\244 \321	A\3261	@\"\206\243 \330\"\203\256 15B52A\2112\2042 5\237-2\307\21191\307\211:;2\20302@\2111\331H\203\346 \332\3261\"\333\":\202\366 <\204\363 \334\335\3361!\"\210\307::\203'\337:@9\"\211;\203;1\307B\244\210\202:@1D9B9:A\211:\204\373 2A\2112\204\316 9\205\2579@@\227\340\3419@A\342\343!\203K#\202L\344#\345\346!=>?=\203e\346?>\"\210\202l\347?>\"\210\350?=\203y@\202{A\"\206\202\351\352!\211?K\353=\204\222\351\354?K\"\210?\355\307\356\357\311\3609@A\"DDEM\210+9A\2119\2045\307.\207" [bbdb-define-all-aliases-field target bbdb-debug bbdb-file w bbdb-case-fold-search "." nil notes mapcar #[(x) "\301@!\207" [x intern] 2] bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) bbdb-records string-match bbdb-record-notes "" * 7 bbdb-record-getprop "" "" 6 bbdb-split "," bbdb-warn "record \"\" unhas network addresses" bbdb-record-name assoc mapconcat bbdb-dwim-net-address boundp mail-alias-separator-string ", " fboundp define-mail-abbrev define-mail-alias intern-soft error "couldn't find the alias we just defined!" mail-abbrev-expand-hook "mail-aliases contains unexpected hook %s" lambda bbdb-mail-abbrev-expand-hook quote #[(x) "\301H@\207" [x 6] 2] record records case-fold-search all-fields matches tmp done fields result aliases match bbdb-silent-running use-abbrev-p expansion alias mail-abbrevs mail-aliases] 9 (#$ . 73265)])
(defalias 'bbdb-mail-abbrev-expand-hook #[(records) "\304 \210\205 \305	!\210\306\307\310\311\"\306\")\207" [bbdb-completion-display-record bbdb-use-pop-up bbdb-gag-messages records mail-abbrev-expand-hook bbdb-pop-up-bbdb-buffer t bbdb-display-records-1 mapcar #[(x) "\306\211G\307=\203 \306	G\307=\203 \306\310\311!\210\n\205` \312\n\227r\313 q\210\310\306\311\"\210)\"J\306\203^ @\n\227\314!\206K \315H\206K \316\227\230\203W \317C\"A)\2022 \f*	;\203y \312	\227r\313 q\210\310\306\311\"\210)\"J\202\237 \306	\203\235 \f\204\235 \312	@\227r\313 q\210\310\306\311\"\210)\"J	A\211\204 \f)\306\211\203\257 \204\305 \203\272 @\206\205@\202\203@\203\367 @=\203\356 \306\211\202\323 A\211\204\330 \203A\202\210*\202\305 -\207" [x net name bbdb-hashtable answer recs nil 0 bbdb-records t intern-soft bbdb-buffer bbdb-record-name 3 "" append n-rec ret net-recs name-recs nets name-rec] 8]] 4])
#@95 Return a list of mail aliases used in the BBDB.
The format is suitable for `completing-read'.
(defalias 'bbdb-get-mail-aliases #[nil "\306B\307\310\311\312r\313 q\210\n\205 \314\315\316!!!\212\317\213+\"B\320 \307 !\203\267 @	;\203J \321	\322!\206F \323\"\202\244 	@\324=\203\226  \307\211\"#$\325H\203\211 #\204\220 $\203\220 \326$@\"\211\"\205 \321	A\"\"#$A$\202b \321	A\327\"##+\202\244 \321	A\326	@\"\206\243 \330\"\203\256 !B!A\211\2042 !\237-\307\211%\203\361 \331\326@\"\332\"\211%\203\350 \333\334%@C\"\210%A\211%\204\327 A\211\204\310 ,\207" [bbdb-define-all-aliases-field target bbdb-debug bbdb-file w bbdb-case-fold-search "." nil notes mapcar #[(x) "\301@!\207" [x intern] 2] bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210	\207" [w bbdb-propnames select-window] 2)) bbdb-records string-match bbdb-record-notes "" * 7 bbdb-record-getprop "" "" bbdb-split "," add-to-list result record records case-fold-search all-fields matches tmp done fields aliases] 9 (#$ . 76565)])
#@224 Add NEWALIAS in all RECORDS or remove it if DELETE it t.
When called with prefix argument it will remove the alias.
We honor `bbdb-apply-next-command-to-all-records'!
The new alias will only be added if it isn't there yet.
(defalias 'bbdb-add-or-remove-mail-alias #[(&optional records newalias delete) "\306\307	\"\203 	\310\225\311O\306\312	\"\203 	\310\211\224O\313\310	G\311	$\210	)\211\314\230?\205/ \n\f\315\232?\205: \316\f\317\232\203I \320\321\"\202W \f\315\232\203V \322\316!C\202W \f\211\203\235 \f@\323\"\211\203r \324\325\"\203\201 \326\"\202\206 \327\330\"\210\331\332\"\333#\210*\fA\211\204\\ \203\246 \334 \202\252 \335\322 !+\207" [newalias string bbdb-define-all-aliases-field propsym records do-all-p string-match "\\`[ 	\n]+" 0 nil "[ 	\n]+\\'" set-text-properties "" one t all mapcar car bbdb-current-record bbdb-record-getprop bbdb-split "," delete add-to-list oldaliases bbdb-join ", " bbdb-record-putprop bbdb-redisplay-records bbdb-redisplay-one-record bbdb-records record] 6 (#$ . 77664) (list (if (bbdb-do-all-records-p) 'all 'one) (completing-read (format "%s mail alias: " (if current-prefix-arg "Remove" "Add")) (bbdb-get-mail-aliases)) current-prefix-arg)])
#@334 *If this is non-nil, it should be a alist with elements of the form
(PREFIX-REGEXP . REPLACEMENT)
e.g. matching prefix which your local phone system (in company) has.
The first matching one will be replaced by is REPLACEMENT in order to use the
shorter number for dialing.  This might reduce cost by using a intern
telephone system.
(custom-declare-variable 'bbdb-dial-local-prefix-alist ''(((if bbdb-default-area-code (format "(%03d)" bbdb-default-area-code) "") "")) '(#$ . -78903) :group 'bbdb-phone-dialing :type 'sexp)
#@201 *If this is non-nil, it should be a string of digits which your phone
system requires before making local calls (for example, if your phone system
requires you to dial 9 before making outside calls.)
(custom-declare-variable 'bbdb-dial-local-prefix 'nil '(#$ . -79434) :group 'bbdb-phone-dialing :type '(choice (const :tag "No digits required" nil) (integer :tag "Dial this first" 9)))
#@222 *If this is non-nil, it should be a string of digits which your phone
system requires before making a long distance call (one not in your local
area code).  For example, in some areas you must dial 1 before an area code.
(custom-declare-variable 'bbdb-dial-long-distance-prefix 'nil '(#$ . -79827) :group 'bbdb-phone-dialing :type '(choice (const :tag "No digits required" nil) (integer :tag "Dial this first" 1)))
#@70 The program to be used to play the sounds for the touch-tone digits.
(custom-declare-variable 'bbdb-sound-player '"/usr/demo/SOUND/play" '(#$ . 80248) :group 'bbdb-phone-dialing :type 'file)
#@130 A vector of ten sound files to be used for dialing.  They
correspond to the 0, 1, 2, ... 9 digits, pound and star, respectively.
(custom-declare-variable 'bbdb-sound-files ''["/usr/demo/SOUND/sounds/touchtone.0.au" "/usr/demo/SOUND/sounds/touchtone.1.au" "/usr/demo/SOUND/sounds/touchtone.2.au" "/usr/demo/SOUND/sounds/touchtone.3.au" "/usr/demo/SOUND/sounds/touchtone.4.au" "/usr/demo/SOUND/sounds/touchtone.5.au" "/usr/demo/SOUND/sounds/touchtone.6.au" "/usr/demo/SOUND/sounds/touchtone.7.au" "/usr/demo/SOUND/sounds/touchtone.8.au" "/usr/demo/SOUND/sounds/touchtone.9.au" "/usr/demo/SOUND/sounds/touchtone.pound.au" "/usr/demo/SOUND/sounds/touchtone.star.au"] '(#$ . 80446) :group 'bbdb-phone-dialing :type 'vector)
#@173 Whether to use the modem for dialing.  Actually this is the modem command
used to dial.  You may set it to a different value in order to initialize your
modem or the like.
(custom-declare-variable 'bbdb-modem-dial 'nil '(#$ . 81172) :group 'bbdb-phone-dialing :type '(choice (const :tag "no" nil) (string :tag "tone dialing" "ATDT ") (string :tag "pulse dialing" "ATDP ")))
#@39 Whether to use the modem for dialing.
(custom-declare-variable 'bbdb-modem-device '"/dev/modem" '(#$ . 81552) :group 'bbdb-phone-dialing :type 'string)
#@60 Play the touchtone corresponding to the numbers in string.
(defalias 'bbdb-dial-number #[(phone-string) "G\306	\307\fW\203\260 \fH\310\nX\203% \311\nY\203% \312\n!\202D \n\313U\203/ \314\202D \n\315U\2039 \316\202D \n\317U\203C \320\202D \307\211;\203\225 	\203\\ \nG\320U\203\251 \nP\202\251 \321\322!\203u \323\324!\203u \325\326\327\nP!*\"\210\202\251 \330+!\204\200 \331\332!\210\333+\307\211\211,\334\n!H%\210\335\306!\210\202\251 \n\247\203\251 	\203\245 \336P\202\251 \335\n!\210\fT\211\202\n 	\205\343 \337\340!-\341\216r-q\210\342\261\210\343ed.\344$\210\345\346\"\210\347 \210\350 \210\351c\210\343ed.\344$+,\207" [phone-string bbdb-modem-dial number modem-command position length 0 nil 48 57 char-to-string 35 "10" 42 "11" 32 1 boundp xemacsp featurep native-sound bbdb-play-sound intern "touchtone" file-exists-p error "no sound player program" call-process string-to-int sit-for "," generate-new-buffer " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) ";\n" write-region t message "%s dialed. Pick up the phone now and hit any key ..." bbdb-next-event erase-buffer "ATH\n" bbdb-sound-volume bbdb-sound-player bbdb-sound-files #1# bbdb-modem-device] 9 (#$ . 81710) "sTelephonenumber: "])
#@356 On an audio-equipped workstation, play the appropriate tones on the
builtin speaker to dial the phone number corresponding to the current
line.  If the point is at the beginning of a record, dial the first
phone number.  Does not dial the extension.  Does not dial the area
code if it is the same as `bbdb-default-area-code' unless a prefix arg
is given.
(defalias 'bbdb-dial #[(phone force-area-code) "\242\306=\203 A@\307H@\242\300=\203 A@\310!\204# \311\312!\210\313!\314\204] \f\211\203\\ \315\316\317\211@@)!P	\"\203U \211@A)@	\320\225\314OP\314A\211\2043 )\315\321	\"\203j 	\320\211\224O\n\204\216 \203\216 \315\322	\"\203\216 \315\323\"\204\211 \311\324!\210\202\216 	P\n\204\266 \203\266 \315\325	\"\203\266 \315\326\"\204\255 \311\327!\210\202\266 \330	\331\314OQ\n\206\273 	 \204\306 \332\333	\"\210\334	!*\207" [phone number shortnumber force-area-code bbdb-dial-local-prefix-alist alist name 4 vectorp error "not on a phone field" bbdb-phone-string nil string-match "^" eval 0 "x[0-9]+$" "^0" "^[0-9#* ]+$" "bbdb-dial-local-prefix contains non-digits" "^+" "^[0-9#* ]+$" "bbdb-dial-long-distance-prefix contains non-digits" " " 1 message "Dialing %s" bbdb-dial-number x bbdb-dial-local-prefix bbdb-dial-long-distance-prefix bbdb-silent-running] 6 (#$ . 82998) (list (bbdb-current-field) current-prefix-arg)])
#@133 Get the current record or ask the user.
To be used in `interactive' like this:
(interactive (list (bbdb-get-record "look up ...")))
(defalias 'bbdb-get-record #[(prompt) "\304\300!\203 \305 \230\203 \306 \207\307\310\n\204* \311	P!\211\204% \312 \210\313\202 \n*\207" [bbdb-buffer-name pr re prompt boundp buffer-name bbdb-current-record nil "" bbdb-completing-read-record ding "Invalid response! "] 4 (#$ . 84367)])
#@57 The buffer into which finger output should be directed.
(custom-declare-variable 'bbdb-finger-buffer-name '"*finger*" '(#$ . 84799) :group 'bbdb-utilities-finger :type 'string)
(defalias 'bbdb-finger-internal #[(address) "\301\302\"\210\303\304\305\217\207" [address message "Fingering %s..." condition (byte-code "\304\305\"\306\307\n	\203 	T\310O\202 \311\312$\313\314\"\210\315\316\317Q!\210\320	\2031 \321	O\2022 \322P\"\210\323!*\207" [address @ bbdb-finger-buffer-name stream string-match "@" open-network-stream "finger" nil "localhost" "finger" set-process-sentinel bbdb-finger-process-sentinel princ "finger " "\n" process-send-string 0 "\n" process-send-eof] 6) ((error (byte-code "\302\303\304	;\203 	\202  \305	A@	AA\205 \306\307\310	AA\311#R#!\210\312\313\211\"\207" [address condition princ format "error fingering %s: %s\n" "\n" ": " mapconcat #[(x) ";\203 \207\301!\207" [x prin1-to-string] 2] ", " bbdb-finger-process-sentinel nil] 11)))] 3])
(defalias 'bbdb-finger-process-sentinel #[(process s) "\212q\210eb\210\304\305\306\307#\203 \310\311!\210\202 \312\301!\2036 	\2036 	@	Adb\210p\313\314!\210\315\n!*\202< db\210\316\317!)\207" [bbdb-finger-buffer-name bbdb-remaining-addrs-to-finger addr standard-output search-forward "" nil t delete-char -1 boundp princ "\n\n\f\n" bbdb-finger-internal message "Finger done."] 4])
#@64 *The field for special net addresses used by "\[bbdb-finger]".
(custom-declare-variable 'bbdb-finger-host-field ''finger-host '(#$ . -86173) :group 'bbdb-utilities-finger :type 'symbol)
(defalias 'bbdb-record-finger-host #[(record) "\205 \303	\"\211\203 \304\n\305\"\202 	\306H)\207" [bbdb-finger-host-field record finger-host bbdb-record-getprop bbdb-split "," 6] 4])
#@1061 Finger the network address of a BBDB record.
If this command is executed from the *BBDB* buffer, finger the network
address of the record at point; otherwise, it prompts for a user.
With a numeric prefix argument, finger the Nth network address of the
current record; with a prefix argument of ^U, finger all of them.
The *finger* buffer is filled asynchronously, meaning that you don't
have to wait around for it to finish; but fingering another user before
the first finger has finished could have unpredictable results.
\<bbdb-mode-map>
If this command is executed from the *BBDB* buffer, it may be prefixed
with "\[bbdb-apply-next-command-to-all-records]" (as in "\[bbdb-apply-next-command-to-all-records]\[bbdb-finger]" instead of simply "\[bbdb-finger]"), meaning to finger all of
the users currently listed in the *BBDB* buffer instead of just the one
at point.  The numeric prefix argument has the same interpretation.

You can define a special network address to "finger" by defining a
field `finger-host' (default value of `bbdb-finger-host-field').
(defalias 'bbdb-finger #[(record &optional which-address) ":\204 C\305\203M \n\204 	\306@!@C\244\202F \n;\203+ 	\nC\244\202F \n\247\203= 	\n\306@!8C\244\202F 	\307\306@!!\244A\211\204 \212\220q\210\310\304!\210	A\311	@!\221*\207" [record addrs which-address bbdb-finger-buffer-name bbdb-remaining-addrs-to-finger nil bbdb-record-finger-host copy-sequence make-local-variable bbdb-finger-internal] 5 (#$ . 86556) (list (bbdb-get-record "BBDB Finger: ") current-prefix-arg)])
#@39 *Remove duplicate nets from a record.
(defalias 'bbdb-remove-duplicate-nets #[(records) "\303\211\n\205. \n@\304H\303	\203  \305\300	@\"\210	A\211\204 \n@\304I\210\nA\211\204 \303*\207" [cnets nets records nil 6 add-to-list] 4 (#$ . -88116) (byte-code "\302=\203 \303\304	\"\207\305 \207" [last-command bbdb-records bbdb-apply-next-command-to-all-records mapcar car bbdb-current-record] 3)])
#@352 Find all records that have duplicate entries for given FIELDS.
FIELDS should be a list of the symbols `name', `net', and/or `aka'.
Note that overlap between these fields is noted if either is selected
(most common case `aka' and `name').  If FIELDS is not given it
defaults to all of them.

The results of the search is returned as a list of records.
(defalias 'bbdb-find-duplicates #[(&optional fields) "\206 \306\307 \310\211\211\211\203\f@\311>\203\\ \312!\203\\ \313\312!\227r\314 q\210\2058 \315\316\317!!!!\"\212\320\213+\"J\211\203\\ \nG\321V\203\\ \322\n	\"\323\324\312!\"\210\325\326!\210\327>\203\256 \330H\211#\203\255 \313#@\227r\314 q\210\205\201 \315\316\317!!!!\"\212\331\213+\"J\211G\321V\203\244 \322\n	\"\323\332\312!#@#\210\325\326!\210#A\211#\204k )\333>\203 \334H\211\203\377 \313@\227r\314 q\210\205\323 \315\316\317!!!!\"\212\335\213+\"J\211G\321V\203\366 \322\n	\"\323\336\312!@#\210\325\326!\210A\211\204\275 )\fA\211\204 \337\340	!!,\207" [fields ret hash rec records bbdb-debug (name net aka) bbdb-records nil name bbdb-record-name intern-soft bbdb-buffer get-buffer-window buffer-name get-buffer ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) 1 append message "BBDB record `%s' causes duplicates, maybe it is equal to a company name." sit-for 0 net 6 ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) "BBDB record `%s' has duplicate net `%s'." aka 2 ((byte-code "\203 \302!\210\303\304\305\"\210	\207" [w bbdb-hashtable select-window bbdb-records nil t] 3)) "BBDB record `%s' has duplicate aka `%s'" reverse bbdb-remove-memq-duplicates bbdb-file w nets] 7 (#$ . 88526)])
#@339 *Find all records that have duplicate entries for given FIELDS.
FIELDS should be a list of the symbols `name', `net', and/or `aka'.
Note that overlap between these fields is noted if either is selected
(most common case `aka' and `name').  If FIELDS is not given it
defaults to all of them.

The results are displayed in the bbdb buffer.
(defalias 'bbdb-show-duplicates #[(&optional fields) "\206 \301\302\303!!\207" [fields (name net aka) bbdb-display-records bbdb-find-duplicates] 3 (#$ . -90313) nil])
#@424 *Apply FUNCTION to all records with timestamps older than DATE.
The comparison is done with COMPARE.  If FUNCTION is not specified, the
selected records are deleted.  If COMPARE is not specified,
`string-lessp' is used.

Example:
(bbdb-kill-older "1997-01-01")
will delete all records with timestamps older than Jan 1 1997.

Notes:  1. Records without timestamp fields will be ignored
2. DATE must be in yyyy-mm-dd format.
(defalias 'bbdb-kill-older #[(date &optional compare function) "\306 \307\206 \310	\206 \311\211\2054 \312@\304\"\211\203, \n\f\"\203, @!\210A\211\204 \307,\207" [function compare cmp fun timestamp records bbdb-records nil bbdb-delete-record-internal string-lessp bbdb-record-getprop date] 5 (#$ . -90829) "sKill records with timestamp older than (yyyy-mm-dd): \n"])
#@170 Builds a lambda comparison function that takes one argument, REC.
REC is returned if
(COMPARE VALUE CMPVAL)
is true, where VALUE is the value of the FIELD field of REC.
(defalias 'bbdb-compare-records '(macro . #[(cmpval field compare) "\303\304\305\306\307\310EDC\311\312\306	\306\nEE\313BBEE\207" [field compare cmpval lambda (rec) let val bbdb-record-getprop rec if and (rec nil)] 10 (#$ . 91642)]))
#@85 *Display records with timestamp older than DATE.
DATE must be in yyyy-mm-dd format.
(defalias 'bbdb-timestamp-older #[(date) "\300\301!\207" [bbdb-display-some #[(rec) "\303\304\"\211\205 	\n\231\205 )\207" [rec val date bbdb-record-getprop timestamp] 4]] 2 (#$ . -92052) "sOlder than date (yyyy-mm-dd): "])
#@85 *Display records with timestamp newer than DATE.
DATE must be in yyyy-mm-dd format.
(defalias 'bbdb-timestamp-newer #[(date) "\300\301!\207" [bbdb-display-some #[(rec) "\303\304\"\211\205 	\n\230\206 	\n\231?\205 )\207" [rec val date bbdb-record-getprop timestamp] 4]] 2 (#$ . -92371) "sNewer than date (yyyy-mm-dd): "])
#@89 *Display records with creation-date older than DATE.
DATE must be in yyyy-mm-dd format.
(defalias 'bbdb-creation-older #[(date) "\300\301!\207" [bbdb-display-some #[(rec) "\303\304\"\211\205 	\n\231\205 )\207" [rec val date bbdb-record-getprop creation-date] 4]] 2 (#$ . -92704) "sOlder than date (yyyy-mm-dd): "])
#@89 *Display records with creation-date newer than DATE.
DATE must be in yyyy-mm-dd format.
(defalias 'bbdb-creation-newer #[(date) "\300\301!\207" [bbdb-display-some #[(rec) "\303\304\"\211\205 	\n\230\206 	\n\231?\205 )\207" [rec val date bbdb-record-getprop creation-date] 4]] 2 (#$ . -93030) "sNewer than date (yyyy-mm-dd): "])
#@66 *Display records that have the same timestamp and creation-date.
(defalias 'bbdb-creation-no-change #[nil "\300\301!\207" [bbdb-display-some #[(rec) "\302\303\"\211\205 	\302\304\"\230\205 )\207" [rec val bbdb-record-getprop creation-date timestamp] 5]] 2 (#$ . -93370) nil])
#@85 *Set this to the location of the bbdb info file, if it's not in the
standard place.
(custom-declare-variable 'bbdb-info-file 'nil '(#$ . -93658) :group 'bbdb :type '(choice (const :tag "Standard location" nil) (file :tag "New location")))
(defalias 'bbdb-info #[nil "\304\305!\210\203\f \306\307!\207	\206 \310\311\n!\203& \311\n!\312\313\314\n\"!)\202, \312\313\315\n\"!)\207" [bbdb-inside-electric-display bbdb-info-file file Info-directory require info bbdb-electric-throw-to-execute (bbdb-info) "bbdb" file-name-directory Info-goto-node format "(%s)Top" "(%s)Top"] 4 nil nil])
(defalias 'bbdb-help #[nil "\300\301\302!!\207" [message substitute-command-keys "\\<bbdb-mode-map>new field: \\[bbdb-insert-new-field]  edit field: \\[bbdb-edit-current-field]  delete field: \\[bbdb-delete-current-field-or-record]  mode help: \\[describe-mode]  info: \\[bbdb-info]"] 3 nil nil])
(byte-code "\301\302!\204 \303\302\304\"\210\301\305!\203 \306\231\203 \307\305\310\"\210\301\207" [emacs-version fboundp member defalias #[(item list) "\203 	@\232\204 A\211\204 \207" [list item] 3] gmhist-make-magic "19" mapcar (bbdb bbdb-name bbdb-company bbdb-net bbdb-changed)] 3)
#@594 Controls how `bbdb-update-records' processes email addresses.
Set this to an expression which evaluates either to 'searching or
'annotating.  When set to 'annotating email addresses will be fed to
`bbdb-annotate-message-sender' in order to update existing records or create
new ones.  A value of 'searching will search just for existing records having
the right net.

There is a version of this variable for each MUA, which overrides this variable
when set!

This variable is also used for inter-function communication between the
functions `bbdb-update-records' and `bbdb-prompt-for-create'.
(custom-declare-variable 'bbdb-update-records-mode ''annotating '(#$ . 94845) :group 'bbdb-mua-specific :type '(choice (const :tag "annotating all messages" annotating) (const :tag "annotating no messages" searching) (sexp :tag "user defined")))
#@113 Used for inter-function communication between the functions
`bbdb-update-records' and `bbdb-prompt-for-create'.
(defvar bbdb-offer-to-create nil (#$ . 95691))
#@113 Used for inter-function communication between the functions
`bbdb-update-records' and `bbdb-prompt-for-create'.
(defvar bbdb-address nil (#$ . 95857))
#@182 Class of currently processed address as in `bbdb-get-addresses-headers'.
The `bbdb-notice-hook' and `bbdb-create-hook' functions may utilize this to
treat updates in the right way.
(defvar bbdb-update-address-class nil (#$ . 96015))
#@168 Header the currently processed address was extracted from.
The `bbdb-notice-hook' and `bbdb-create-hook' functions may utilize this to
treat updates in the right way.
(defvar bbdb-update-address-header nil (#$ . 96255))
#@546 Returns the records corresponding to the list of addresses ADDRS,
creating or modifying them as necessary.  A record will be created if
AUOT-CREATE-P is non-nil or if OFFER-TO-CREATE is true and the user
confirms the creation.

The variable `bbdb/gnus-update-records-mode' controls what actions
are performed and it might override `bbdb-update-records-mode'.

When hitting C-g once you will not be asked any more for new people listed
in this message, but it will search only for existing records.  When hitting
C-g again it will stop scanning.
(defalias 'bbdb-update-records #[(addrs auto-create-p offer-to-create) "\306!\307 \310	\206 \311=	\203 \312\202\" \n<\203! \313\n!\202\" \nG\314\211\211\211\203z @\211@\211A@)\211AA)@\314\315\316\217\210\f\203s \f@\203l \317\305\f@\"\210\fA\211\204a A\211\204; \237\204\226 \204\226 \203\226 G\320V\204\226 \321\322!\210.	\207" [auto-create-p offer-to-create bbdb-update-records-mode addrs hits records bbdb-invoke-hook-for-value bbdb-records 0 prompt annotating eval nil (byte-code "\306=\203 \307	\310\n\206 \311$C\202\215 \312=\205\215 \313\314	\211A@)!\315Q\310\316\316\203\210 @\211\317H\316\211 \203k  \203r \204r \320 @\" A\211 \204Q \202r \320\321\"*\203 BA\211\204; \237.!\"T\"#\204\302 $\204\302 %\322=\204\302 \"\323\246\324U\203\302 \325\326\"&$'\327'!\210)\330\324!\210\316\207" [bbdb-update-records-mode bbdb-address offer-to-create auto-create-p x bbdb-case-fold-search annotating bbdb-annotate-message-sender t bbdb-prompt-for-create searching "^" regexp-quote "$" nil 6 string-match "" quit 5 0 format "Hit C-g to stop BBDB from %s.  %d of %d addresses processed." message sit-for net bbdb-records record records case-fold-search matches done rest-of-nets hits processed-addresses bbdb-silent-running bbdb-gag-messages bbdb-offer-to-create addrslen mess] 6) ((quit (byte-code "\301=\203 \302\202 \302=\204 \303=\203 \301\202 \304\301\207" [bbdb-update-records-mode annotating searching next quit] 2))) add-to-list 1 message "Updating of BBDB records finished" bbdb-update-address-header bbdb-update-address-class addrslen bbdb-offer-to-create processed-addresses bbdb-address x bbdb-silent-running bbdb-gag-messages] 10 (#$ . 96482)])
#@77 Display MESSAGE in a new window which is the last one in the current frame.
(defalias 'bbdb-get-help-window #[(message) "\306\307!\310\311!\206 \312 \313\314\315\316\n#\211\203\" T	T\202 	*\317\f!\320\f!\210\321!\210\322 \210\nc\210eb\210\323\324\325\f!Z!\210)\f+\207" [s l message lines w b get-buffer-create " *BBDB Help*" get-buffer-window " *BBDB Help*" get-lru-window 2 0 string-match "\n" split-window select-window switch-to-buffer erase-buffer 1 enlarge-window window-height window-min-height] 6 (#$ . 98818)])
#@64 Kill the buffer corresponding to WINDOW and delete the WINDOW.
(defalias 'bbdb-kill-help-window #[(window) "\301\302!!\210\303!\207" [window kill-buffer window-buffer delete-window] 3 (#$ . 99360)])
(byte-code "\300\301!\204\n \301\302M\210\300\207" [fboundp char-int identity] 2)
#@106 This function is used by `bbdb-update-records' to ask the user how to
proceed the processing of records.
(defalias 'bbdb-prompt-for-create #[nil "\306\211\205\215 \250\2045 \307\310\f@\206 \f\211A@)\"\n\2043 \311	!\211;\205. \n\312H\211\203\" \n\313\314!\210\315=\203E \306\202\215 \316=\203O \306\202\215 \317=\203a \320\321\322\306\"\202\215 \323=\203q \322\321\322\306\"\202\215 \324=\203\201 \325\321\322\306\"\202\215 \326\327!\306\211\330\331\217)+\207" [bbdb-offer-to-create prompt event old-offer-to-create bbdb-address x nil format "%s is not in the db; add? (y,!,n,s,q,?) " read-key-sequence 0 message "" 121 33 110 next signal quit 113 115 searching bbdb-get-help-window "Your answer controls how BBDB 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.\nType s  to switch from annotate to search mode.\nType q  to quit updating records.  No more search or annotation is done." (bbdb-prompt-for-create) ((quit (byte-code "\301!\210\302\303\304\"\207" [w bbdb-kill-help-window signal quit nil] 3))) bbdb-update-records-mode w] 4 (#$ . 99650)])
#@151 *List of headers to search for senders and recipients email addresses.
The headers are grouped into two classes, the authors and the senders headers.
(custom-declare-variable 'bbdb-get-addresses-headers ''((authors "From" "Resent-From" "Reply-To") (recipients "Resent-To" "Resent-CC" "To" "CC" "BCC")) '(#$ . -100858) :group 'bbdb-mua-specific :type 'list)
#@196 *If t `bbdb-update-records' will return only the first one.
Changing this variable will show its effect only after clearing the
`bbdb-message-cache' of a folder or closing and visiting it again.
(custom-declare-variable 'bbdb-get-only-first-address-p 't '(#$ . -101222) :group 'bbdb-mua-specific :type 'boolean)
#@2 
(defalias 'bbdb-get-addresses #[(only-first-address uninteresting-senders get-header-content-function &rest get-header-content-function-args) "	\206 \n\306\211\211\211\211\211\211\f\n\211\203\274 \211@@)\211@A)\211\203\263 \307\f@#\211\203\254 !\203\254 \211@@)\f\211@A)@;\203\205 \f\203w \310\f\"\204\220 \203\205 \310\"\204\220 \311\312\f@@E\"\210\203\243 \n\203\243 \306\211\202I A\211\204N \fA\211\2046 A\211\204  \n\237.	\207" [bbdb-get-addresses-headers bbdb-user-mail-names uninteresting-senders header-content header-fields header-type nil apply string-match add-to-list addrlist ad fn adlist ignore-senders headers x get-header-content-function get-header-content-function-args bbdb-extract-address-components-func only-first-address] 10 (#$ . 101539)])
(provide 'bbdb-com)
