;ELC   
;;; Compiled by rms@psilocin.gnu.org on Thu Apr 30 02:49:15 1998
;;; from file /gd/gnu/emacs/lisp/mail/mailabbrev.el
;;; in Emacs version 20.2.92.9
;;; with bytecomp version 2.41
;;; with all optimizations.
;;; This file uses opcodes which do not exist in Emacs 18.

(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 "`mailabbrev.el' was compiled for Emacs 19.29 or later"))


(byte-code "\301\302!\210\303\304\305\306\307%\207" [:group require sendmail custom-declare-group mail-abbrev nil "Expand mail aliases as abbrevs, in certain mail headers." abbrev-mode] 6)
#@76 *Non-nil means expand mail aliases as abbrevs, in certain message headers.
(custom-declare-variable 'mail-abbrevs-mode 'nil '(#$ . -730) :type 'boolean :group 'mail-abbrev :require 'mailabbrev :set '(lambda (symbol value) (setq mail-abbrevs-mode value) (if value (mail-abbrevs-enable) (mail-abbrevs-disable))) :initialize 'custom-initialize-default :version "20.3")
#@130 *Non-nil means only mail abbrevs should expand automatically.
Other abbrevs expand only when you explicitly use `expand-abbrev'.
(custom-declare-variable 'mail-abbrevs-only 'nil '(#$ . -1103) :type 'boolean :group 'mail-abbrev)
#@262 Word-abbrev table of mail address aliases.
If this is nil, it means the aliases have not yet been initialized and
should be read from the .mailrc file.  (This is distinct from there being
no aliases, which is represented by this being a table with no entries.)
(defvar mail-abbrevs nil (#$ . 1338))
#@74 The modification time of your mail alias file when it was last examined.
(defvar mail-abbrev-modtime nil (#$ . 1643))
(defalias 'mail-abbrevs-sync-aliases #[nil "\303!\205 \304\305!8\n	\232?\205 	\306 )\207" [mail-personal-alias-file modtime mail-abbrev-modtime file-exists-p 5 file-attributes build-mail-abbrevs] 3])
#@45 Initialize use of the `mailabbrev' package.
(defalias 'mail-abbrevs-setup #[nil "\303!\204 \304	!\203 \305\306	!8\307 \210\310 \210\311\312!\210\313\312\314\315\316$\210\317\320!\207" [mail-abbrevs mail-personal-alias-file mail-abbrev-modtime vectorp file-exists-p 5 file-attributes build-mail-abbrevs mail-abbrevs-sync-aliases make-local-hook pre-abbrev-expand-hook add-hook sendmail-pre-abbrev-expand-hook nil t abbrev-mode 1] 5 (#$ . 1973)])
(defalias 'mail-abbrevs-enable #[nil "\300\301\302\"\207" [add-hook mail-setup-hook mail-abbrevs-setup] 3])
#@43 Turn off use of the `mailabbrev' package.
(defalias 'mail-abbrevs-disable #[nil "\300\301\302\"\210\303\304\303!\203 \305\202 \306!\207" [remove-hook mail-setup-hook mail-abbrevs-setup abbrev-mode default-value 1 -1] 3 (#$ . 2536)])
#@142 Read mail aliases from personal mail alias file and set `mail-abbrevs'.
By default this is the file specified by `mail-personal-alias-file'.
(defalias 'build-mail-abbrevs #[(&optional file recursivep) "\306\206 	!\307\n!\204 \310\311\302\310\"\210\312\313\"\210\310p\314\216\315\316!\317\f!\210\fq\210\320!\203@ \212\320!q\210ed{)c\210\202J \321!\203J \322!\210db\210h\323=\204V \324 \210eb\210\325\326\310\327#\203p `\330Z\310\210`|\210)\202Y eb\210m\204\224 \310\210h\331U\203\216 \332\333!\210\332\334!\210\335c\210\202s \334u\210\202s eb\210\336\337\310\327#\203\334 \340y\210\341\342!\203\271 \310\210\343\344\334\224\334\225{!\327\"\210\202\227 \336\345!\210\334\224\334\225{*\346\310w\210`+\310\210\347*+`{\327#\210*\202\227 ,\204\344 \350 \210+\312\351\"\207" [file mail-personal-alias-file mail-abbrevs obuf buffer p expand-file-name vectorp nil define-abbrev-table message "Parsing %s..." ((byte-code "\203 \302!\210	q\207" [buffer obuf kill-buffer] 2)) generate-new-buffer " mailrc" buffer-disable-undo get-file-buffer file-exists-p insert-file-contents 10 newline search-forward "# " t 2 92 delete-char -1 1 32 re-search-forward "^\\(a\\(lias\\)?\\|g\\(roup\\)?\\|source\\)[ 	]+" 0 looking-at "source[ 	]+\\([^ 	\n]+\\)" build-mail-abbrevs substitute-in-file-name "[ 	]+\\([^ 	\n]+\\)" " 	" define-mail-abbrev mail-resolve-all-aliases "Parsing %s... done" name start recursivep] 4 (#$ . 2778)])
#@212 *A string inserted between addresses in multi-address mail aliases.
This has to contain a comma, so ", " is a reasonable value.  You might
also want something like ",\n    " to get each address on its own line.
(defvar mail-alias-separator-string ", " (#$ . -4220))
(byte-code "\302\300!\204 \303\300	B\302\207" [mail-abbrev-aliases-need-to-be-resolved current-load-list boundp t] 2)
#@137 Define NAME as a mail alias abbrev that translates to DEFINITION.
If DEFINITION contains multiple addresses, separate them with commas.
(defalias 'define-mail-abbrev #[(name definition &optional from-mailrc-file) "\306!\204 \307\310\300\307\"\210\311	!\203 \312 \210\313\314\n\"\203# \n\315\225\307O\313\316\n\"\2030 \n\315\211\224O\307\nG\211\315V\205< \315\307\203\213 \203h \nH\317=\203^ T\313\320\n#\202o \313\321\n#\202o \313\322\n#\nOB\205\206 \315\225\fU?\205\206 \315\225\211\204D \323\324\237#,\325\227\326\n\327$)\207" [mail-abbrevs mail-personal-alias-file definition result L start vectorp nil define-abbrev-table file-exists-p build-mail-abbrevs string-match "\\`[ 	\n,]+" 0 "[ 	\n,]+\\'" 34 "\"[ 	,]*" "[ 	,]+" "[ 	\n,]*,[ 	\n,]*" mapconcat identity t define-abbrev mail-abbrev-expand-hook end from-mailrc-file mail-alias-separator-string mail-abbrev-aliases-need-to-be-resolved name abbrevs-changed] 6 (#$ . 4614) "sDefine mail alias: \nsDefine %s as mail alias for: "])
#@59 Resolve all forward references in the mail aliases table.
(defalias 'mail-resolve-all-aliases #[nil "\205 \302	!\203 \303\304	\"\210\305\211\207" [mail-abbrev-aliases-need-to-be-resolved mail-abbrevs vectorp mapatoms mail-resolve-all-aliases-1 nil] 3 (#$ . 5657)])
(defalias 'mail-resolve-all-aliases-1 #[(sym &optional so-far) "	>\203 \306\307\310\311	B\312#\"\210\313!\205 J\211\203K \314\315\203> \316\317\n#\nO\fB\2059 \315\225)\202\" \310\320\f\237#\nL\210*)J\207" [sym so-far definition start result end error "mail alias loop detected: %s" mapconcat symbol-name " <- " boundp nil 0 string-match "[ 	\n]*,[, 	\n]*" #[(x) "\304\305\227	\"\nB\"\206 \207" [x mail-abbrevs sym so-far mail-resolve-all-aliases-1 intern-soft] 4] mail-alias-separator-string] 7])
#@198 For use as the fourth arg to `define-abbrev'.
After expanding a mail-abbrev, if Auto Fill mode is on and we're past the
fill-column, break the line at the previous comma, and indent the next line.
(defalias 'mail-abbrev-expand-hook #[nil "\306\212`\306\211\211\307y\210`\fb\210\205U iY\205U \310\311\312#\205U `\313u\210\314c\210\315 \210`\316 \210\f`{\306\210iV\203O 	\206I \317\320 \210)\nb\210\202 .\207" [abbrev-mode fp comma bol p auto-fill-function nil 0 search-backward "," t 1 "\n" delete-horizontal-space indent-relative "	" do-auto-fill fill-column fill-prefix] 4 (#$ . 6456)])
#@387 *Regexp to select mail-headers in which mail abbrevs should be expanded.
This string will be handed to `looking-at' with point at the beginning
of the current line; if it matches, abbrev mode will be turned on, otherwise
it will be turned off.  (You don't need to worry about continuation lines.)
This should be set to match those mail fields in which you want abbreviations
turned on.
(defvar mail-abbrev-mode-regexp "^\\(Resent-\\)?\\(To\\|From\\|CC\\|BCC\\|Reply-to\\):" (#$ . -7071))
#@171 The syntax table used in send-mail mode when in a mail-address header.
`mail-mode-syntax-table' is used when the cursor is in the message body or in
non-address headers.
(defvar mail-mode-header-syntax-table (byte-code "\302!\303\304\305	#\210\303\306\305	#\210\303\307\305	#\210\303\310\305	#\210\303\311\305	#\210\303\312\305	#\210\303\313\314	#\210\303\315\316	#\210	)\207" [text-mode-syntax-table tab copy-syntax-table modify-syntax-entry 64 "_" 37 33 46 95 45 60 "(>" 62 ")<"] 4) (#$ . 7566))
#@211 The syntax-table used for abbrev-expansion purposes.
This is not actually made the current syntax table of the buffer, but
simply controls the set of characters which may be a part of the name
of a mail alias.
(defvar mail-abbrev-syntax-table (byte-code "\304!\305 \306H\305 \307H\310\311	\"\210	+\207" [mail-mode-header-syntax-table tab _ w copy-syntax-table standard-syntax-table 95 119 map-char-table #[(key value) "	\232\205 \305\n\f#\207" [value _ tab key w set-char-table-range] 4]] 3) (#$ . 8073))
#@50 Whether point is in a mail-address header field.
(defalias 'mail-abbrev-in-expansion-header-p #[nil "\302\212\303y\210\304\305!\203 `eU\204 \306y\210\202 \304	!)\205# `\307 W)\207" [case-fold-search mail-abbrev-mode-regexp t 0 looking-at "^[ 	]" -1 mail-header-end] 2 (#$ . 8591)])
(byte-code "\301B\301\207" [current-load-list mail-mode-abbrev-table] 2)
(defalias 'sendmail-pre-abbrev-expand-hook #[nil "\205a \306=?\205a \307 \203@ 	\203 \310 \210\311!\210\f\250\203) \fz\312=\2048 \313\311!\210\314 \210\311!\210)dp\211\207\203L \314=\203Z \315\316!\205T \311!\207dp\211\207" [mail-abbrevs mail-abbrev-aliases-need-to-be-resolved local-abbrev-table mail-mode-header-syntax-table last-command-char pre-abbrev-expand-hook t mail-abbrev-in-expansion-header-p mail-resolve-all-aliases set-syntax-table 95 nil expand-abbrev boundp mail-mode-abbrev-table mail-abbrev-syntax-table abbrev-start-location abbrev-start-location-buffer mail-abbrevs-only this-command mail-mode-syntax-table] 2])
#@60 Merge mail aliases from the given file with existing ones.
(defalias 'merge-mail-abbrevs #[(file) "\301!\207" [file build-mail-abbrevs] 2 (#$ . 9617) (list (let ((insert-default-directory t) (default-directory (expand-file-name "~/")) (def mail-personal-alias-file)) (read-file-name (format "Read additional aliases from file: (default %s) " def) default-directory (expand-file-name def default-directory) t)))])
#@51 Rebuild all the mail aliases from the given file.
(defalias 'rebuild-mail-abbrevs #[(&optional file) "\204 	\303\304!\207" [file buffer-file-name mail-abbrevs nil build-mail-abbrevs] 2 (#$ . 10037) (list (let ((insert-default-directory t) (default-directory (expand-file-name "~/")) (def mail-personal-alias-file)) (read-file-name (format "Read mail aliases from file: (default %s) " def) default-directory (expand-file-name def default-directory) t)))])
#@37 Prompt for and insert a mail alias.
(defalias 'mail-interactive-insert-alias #[(&optional alias) "\302!\204	 \303 \210	\203 \304	\"J\206 \305c\210\306 \207" [mail-abbrevs alias vectorp mail-abbrevs-setup intern-soft "" mail-abbrev-expand-hook] 3 (#$ . 10503) (byte-code "\301!\204	 \302 \210\303\304\305\306$C\207" [mail-abbrevs vectorp mail-abbrevs-setup completing-read "Expand alias: " nil t] 5)])
#@832 Expand any mail abbrev, then move cursor vertically down ARG lines.
If there is no character in the target line exactly under the current column,
the cursor is positioned after the character in that line which spans this
column, or at the end of the line if it is not long enough.
If there is no line in the buffer after this one,
a newline character is inserted to create a line
and the cursor moves to that line.

The command \[set-goal-column] can be used to create
a semipermanent goal column to which this command always moves.
Then it does not try to move vertically.  This goal column is stored
in `goal-column', which is nil when there is none.

If you are thinking of using this in a Lisp program, consider
using `forward-line' instead.  It is usually easier to use
and more reliable (no dependence on goal column, etc.).
(defalias 'mail-abbrev-next-line #[(&optional arg) "\302\303!\203	 \304 \210\305\305	!\207" [this-command arg looking-at "[ 	]*\n" expand-abbrev next-line] 2 (#$ . 10917) "p"])
#@257 Expand any mail abbrev, then move point to end of buffer.
Leave mark at previous position.
With arg N, put point N/10 of the way from the true end.

Don't use this command in Lisp programs!
(goto-char (point-max)) is faster and avoids clobbering the mark.
(defalias 'mail-abbrev-end-of-buffer #[(&optional arg) "\302\303!\203	 \304 \210\305\305	!\207" [this-command arg looking-at "[ 	]*\n" expand-abbrev end-of-buffer] 2 (#$ . 11933) "P"])
(byte-code "\302\303\304#\210\305\306!\210	\203 \307 \210\302\207" [mail-mode-map mail-abbrevs-mode define-key "" mail-interactive-insert-alias provide mailabbrev mail-abbrevs-enable] 4)
