;ELC
;;; Compiled by LTX@Xue-LingTaos-MacBook-Pro.local on Wed Mar 16 23:15:52 2011
;;; from file /Users/LTX/Projects/Emacs/emacs/lisp/mail/footnote.el
;;; in Emacs version 24.0.50.1
;;; with all optimizations.

;;; This file contains utf-8 non-ASCII characters,
;;; and so cannot be loaded into Emacs 22 or earlier.
(and (boundp 'emacs-version)
     (< (aref emacs-version (1- (length emacs-version))) ?A)
     (string-lessp emacs-version "23")
     (error "`footnote.el' was compiled for Emacs 23 or later"))

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


(custom-declare-group 'footnote nil "Support for footnotes in mail and news messages." :version "21.1" :group 'message)
#@54 String to display in modes section of the mode-line.
(custom-declare-variable 'footnote-mode-line-string '" FN" '(#$ . 667) :group 'footnote)
#@53 Hook functions run when footnote-mode is activated.
(custom-declare-variable 'footnote-mode-hook 'nil '(#$ . 815) :type 'hook :group 'footnote)
#@68 If non-nil, narrow to footnote text body while editing a footnote.
(custom-declare-variable 'footnote-narrow-to-footnotes-when-editing 'nil '(#$ . 965) :type 'boolean :group 'footnote)
#@93 If non-nil, prompt before deleting a footnote.
There is currently no way to undo deletions.
(custom-declare-variable 'footnote-prompt-before-deletion 't '(#$ . 1156) :type 'boolean :group 'footnote)
#@134 If non-nil, insert an empty line between footnotes.
Customizing this variable has no effect on buffers already
displaying footnotes.
(custom-declare-variable 'footnote-spaced-footnotes 't '(#$ . 1362) :type 'boolean :group 'footnote)
#@63 If non-nil, assume Footnoting will be done in `message-mode'.
(custom-declare-variable 'footnote-use-message-mode 't '(#$ . 1602) :type 'boolean :group 'footnote)
#@144 Number of spaces separating a footnote body tag and its text.
Customizing this variable has no effect on buffers already
displaying footnotes.
(custom-declare-variable 'footnote-body-tag-spacing '2 '(#$ . 1772) :type 'integer :group 'footnote)
#@203 Prefix key to use for Footnote command in Footnote minor mode.
The value of this variable is checked as part of loading Footnote mode.
After that, changing the prefix key requires manipulating keymaps.
(custom-declare-variable 'footnote-prefix '[(control 99) 33] '(#$ . 2023))
#@245 Tag inserted at beginning of footnote section.
If you set this to the empty string, no tag is inserted and the
value of `footnote-section-tag-regexp' is ignored.  Customizing
this variable has no effect on buffers already displaying
footnotes.
(custom-declare-variable 'footnote-section-tag '"Footnotes: " '(#$ . 2307) :type 'string :group 'footnote)
#@217 Regexp which indicates the start of a footnote section.
This variable is disregarded when `footnote-section-tag' is the
empty string.  Customizing this variable has no effect on buffers
already displaying footnotes.
(custom-declare-variable 'footnote-section-tag-regexp '"Footnotes\\(\\[.\\]\\)?: " '(#$ . 2665) :type 'regexp :group 'footnote)
#@172 String used to denote start of numbered footnote.
Should not be set to the empty string.  Customizing this variable
has no effect on buffers already displaying footnotes.
(custom-declare-variable 'footnote-start-tag '"[" '(#$ . 3016) :type 'string :group 'footnote)
#@170 String used to denote end of numbered footnote.
Should not be set to the empty string.  Customizing this variable
has no effect on buffers already displaying footnotes.
(custom-declare-variable 'footnote-end-tag '"]" '(#$ . 3289) :type 'string :group 'footnote)
#@40 *String used to recognize .signatures.
(defvar footnote-signature-separator (byte-code "\301\300!\203\207\302\207" [message-signature-separator boundp "^-- $"] 2) (#$ . -3557))
#@67 Footnote style represented as an index into footnote-style-alist.
(defvar footnote-style-number nil (#$ . 3743))
(make-variable-buffer-local 'footnote-style-number)
#@66 List of markers pointing to text of footnotes in message buffer.
(defvar footnote-text-marker-alist nil (#$ . 3914))
(make-variable-buffer-local 'footnote-text-marker-alist)
#@66 List of markers pointing to footnote pointers in message buffer.
(defvar footnote-pointer-marker-alist nil (#$ . 4094))
(make-variable-buffer-local 'footnote-pointer-marker-alist)
#@52 Text property name to enable mouse over highlight.
(defvar footnote-mouse-highlight 'highlight (#$ . 4280))
#@20 Regexp for digits.
(defconst footnote-numeric-regexp "[0-9]+" (#$ . 4394))
#@61 Numeric footnote style.
Use Arabic numerals for footnoting.
(defalias 'Footnote-numeric #[(n) "\301!\207" [n int-to-string] 2 (#$ . 4475)])
#@30 Upper case English alphabet.
(defconst footnote-english-upper "ABCDEFGHIJKLMNOPQRSTUVWXYZ" (#$ . 4622))
#@41 Regexp for upper case English alphabet.
(defconst footnote-english-upper-regexp "[A-Z]+" (#$ . 4732))
#@104 Upper case English footnoting.
Wrapping around the alphabet implies successive repetitions of letters.
(defalias 'Footnote-english-upper #[(n) "\306S	G\"S	G\245\307	\nH!\310\311Y\203&
\fPS\211\202
,\207" [n footnote-english-upper ltr rep chr rc mod char-to-string nil 0] 4 (#$ . 4841)])
#@30 Lower case English alphabet.
(defconst footnote-english-lower "abcdefghijklmnopqrstuvwxyz" (#$ . 5147))
#@40 Regexp of lower case English alphabet.
(defconst footnote-english-lower-regexp "[a-z]+" (#$ . 5257))
#@104 Lower case English footnoting.
Wrapping around the alphabet implies successive repetitions of letters.
(defalias 'Footnote-english-lower #[(n) "\306S	G\"S	G\245\307	\nH!\310\311Y\203&
\fPS\211\202
,\207" [n footnote-english-lower ltr rep chr rc mod char-to-string nil 0] 4 (#$ . 5365)])
#@43 List of roman numerals with their values.
(defconst footnote-roman-lower-list '((1 . "i") (5 . "v") (10 . "x") (50 . "l") (100 . "c") (500 . "d") (1000 . "m")) (#$ . 5671))
#@27 Regexp of roman numerals.
(defconst footnote-roman-lower-regexp "[ivxlcdm]+" (#$ . 5850))
#@34 Generic Roman number footnoting.
(defalias 'Footnote-roman-lower #[(n) "\302	\"\207" [n footnote-roman-lower-list Footnote-roman-common] 3 (#$ . 5946)])
#@43 List of roman numerals with their values.
(defconst footnote-roman-upper-list '((1 . "I") (5 . "V") (10 . "X") (50 . "L") (100 . "C") (500 . "D") (1000 . "M")) (#$ . 6106))
#@41 Regexp of roman numerals.  Not complete
(defconst footnote-roman-upper-regexp "[IVXLCDM]+" (#$ . 6285))
#@34 Generic Roman number footnoting.
(defalias 'Footnote-roman-upper #[(n) "\302	\"\207" [n footnote-roman-upper-list Footnote-roman-common] 3 (#$ . 6395)])
#@30 Lower case Roman footnoting.
(defalias 'Footnote-roman-common #[(n footnote-roman-list) "\211G\306\211\307\306\211

\nSX\203-
	8@Y\203-
T\211
\202

S
\307U\203nW\203n	8@	8@\310\245ZV\204c	8@	8@ZU\203fT\2024\f	8	8
\307U?\205~
	8\306W\203\221\311\312!\202\376\306U\203\234\313\202\376@U\203\253A\202\376@U\203\272A\202\376@@U\203\324A\314@Z\"P\202\376
\306Y\203\361AA\314@@ZZ\"Q\202\376A\314@Z\"P.\n\207" [footnote-roman-list our-list rom-lngth rom-high rom-low rom-div 0 -1 2 error "Footnote-roman-common called with n < 0" "" Footnote-roman-common count-high count-low n rom-div-pair rom-high-pair rom-low-pair] 7 (#$ . 6555)])
#@42 String of Latin-1 footnoting characters.
(defconst footnote-latin-string "Â¹Â²Â³ÂºÂªÂ§Â¶" (#$ . 7302))
#@43 Regexp for Latin-1 footnoting characters.
(defconst footnote-latin-regexp (concat "[" footnote-latin-string "]") (#$ . 7411))
#@85 Latin-1 footnote style.
Use a range of Latin-1 non-ASCII characters for footnoting.
(defalias 'Footnote-latin #[(n) "\302\303	SG\"H!\207" [footnote-latin-string n string mod] 5 (#$ . 7543)])
#@213 Styles of footnote tags available.
By default only boring Arabic numbers, English letters and Roman Numerals
are available.
See footnote-han.el, footnote-greek.el and footnote-hebrew.el for more
exciting styles.
(defvar footnote-style-alist (byte-code "\306\307E\310\311	E\312\313\nE\314\315E\316\317\fE\320\321
E\257\207" [footnote-numeric-regexp footnote-english-lower-regexp footnote-english-upper-regexp footnote-roman-lower-regexp footnote-roman-upper-regexp footnote-latin-regexp numeric Footnote-numeric english-lower Footnote-english-lower english-upper Footnote-english-upper roman-lower Footnote-roman-lower roman-upper Footnote-roman-upper latin Footnote-latin] 8) (#$ . 7743))
#@461 Default style used for footnoting.
numeric == 1, 2, 3, ...
english-lower == a, b, c, ...
english-upper == A, B, C, ...
roman-lower == i, ii, iii, iv, v, ...
roman-upper == I, II, III, IV, V, ...
latin == Â¹ Â² Â³ Âº Âª Â§ Â¶
See also variables `footnote-start-tag' and `footnote-end-tag'.

Customizing this variable has no effect on buffers already
displaying footnotes.  To change the style of footnotes in such a
buffer use the command `Footnote-set-style'.
(custom-declare-variable 'footnote-style ''numeric '(#$ . 8442) :type (byte-code "\301\302\303\"B\207" [footnote-style-alist choice mapcar #[(x) "\301@D\207" [x const] 2]] 4) :group 'footnote)
#@66 Return non-nil if style is a valid style known to footnote-mode.
(defalias 'Footnote-style-p #[(style) "	\236\207" [style footnote-style-alist] 2 (#$ . 9103)])
#@122 Convert a binary index into a string to display as a footnote.
Conversion is done based upon the current selected style.
(defalias 'Footnote-index-to-string #[(index) "\304!\203\f	\236\202	@\211A@!)\207" [footnote-style footnote-style-alist alist index Footnote-style-p] 3 (#$ . 9271)])
#@54 Return the regexp of the index of the current style.
(defalias 'Footnote-current-regexp #[nil "\302	\236\206		@8\303P\207" [footnote-style footnote-style-alist 2 "*"] 3 (#$ . 9571)])
#@105 Redraw all footnotes.
You must call this or arrange to have this called after changing footnote
styles.
(defalias 'Footnote-refresh-footnotes #[(&optional index-regexp) "\204\306 \212\307\310\211\211\f8\211\203W	A\211\203P\n@b\210\311\312
!\313\314\312!\260\315 \"\203I\316\317
\320T!Q\321T\322%\310\323#\210\nA\211\204T\211\202+\307\310\2118\211\205\223	Ab\210\324\312
!\313\314\312!\260!\203\214\316\317
\320T!Q\321T#\310\323#\210T\211\202]+\207" [index-regexp alist locn i footnote-pointer-marker-alist footnote-start-tag Footnote-current-regexp 0 nil looking-back regexp-quote "\\(" "+\\)" line-beginning-position replace-match propertize Footnote-index-to-string footnote-number t "\\1" looking-at footnote-end-tag footnote-mouse-highlight footnote-text-marker-alist] 8 (#$ . 9763)])
#@29 Give index of key in alist.
(defalias 'Footnote-assoc-index #[(key alist) "\305G\306	\204\"\nW\203\"\f8@=\203T\202	+\207" [alist rc max i key 0 nil] 3 (#$ . 10605)])
#@37 Select next defined footnote style.
(defalias 'Footnote-cycle-style #[nil "\305	\"	G\306\211T\211Y\203\307\n	8@\310\311\f	88!+\207" [footnote-style footnote-style-alist idx max old Footnote-assoc-index nil 0 Footnote-refresh-footnotes 2] 5 (#$ . 10794) nil])
#@26 Select a specific style.
(defalias 'Footnote-set-style #[(&optional style) "\304	\"\305\306\n	88!)\207" [footnote-style footnote-style-alist old style Footnote-assoc-index Footnote-refresh-footnotes 2] 4 (#$ . 11069) (list (intern (completing-read "Footnote Style: " obarray #'Footnote-style-p 'require-match)))])
#@38 Insert numbered footnote at (point).
(defalias 'Footnote-insert-numbered-footnote #[(arg &optional mousable) "\306	!\nQ\307\f\203\310\311	
\312%\202\310\311	#!)\207" [footnote-start-tag arg footnote-end-tag string mousable footnote-mouse-highlight Footnote-index-to-string insert-before-markers propertize footnote-number t] 7 (#$ . 11393)])
#@29 Renumber a single footnote.
(defalias 'Footnote-renumber #[(from to pointer-alist text-alist) "A\n\240\210\n\240\210	\203:	@b\210\306\307\f!\310 \307
!Q\311 \"\2033\312\313\f\314\n!
Q\315\n\316%!\210	A\211\204Ab\210\317\307\f!\310 \307
!Q!\205X\312\313\f\314\n!
Q\315\n#!)\207" [pointer-alist posn-list to text-alist footnote-start-tag footnote-end-tag looking-back regexp-quote Footnote-current-regexp line-beginning-position replace-match propertize Footnote-index-to-string footnote-number t looking-at footnote-mouse-highlight] 8 (#$ . 11749)])
#@57 Restrict text in buffer to show only text of footnotes.
(defalias 'Footnote-narrow-to-footnotes #[nil "db\210\306\307\310#\2050`\n\311\230\204#\306\312P\307\310#\203#`	}\202/\f\205/\f\211@A)	})\207" [footnote-signature-separator end footnote-section-tag footnote-section-tag-regexp footnote-text-marker-alist x re-search-backward nil t "" "^"] 5 (#$ . 12317) nil])
#@56 Move to end of buffer or prior to start of .signature.
(defalias 'Footnote-goto-char-point-max #[nil "db\210\301\302\303#\206\f`\207" [footnote-signature-separator re-search-backward nil t] 4 (#$ . 12697)])
#@68 Insert a marker pointing to footnote ARG, at buffer location LOCN.
(defalias 'Footnote-insert-text-marker #[(arg locn) "\304 	\n\236?\205\305\223\210	B\nB\306\n!\211)\207" [marker arg footnote-text-marker-alist locn make-marker nil Footnote-sort] 3 (#$ . 12912)])
#@68 Insert a marker pointing to footnote ARG, at buffer location LOCN.
(defalias 'Footnote-insert-pointer-marker #[(arg locn) "\305 \306\211\n\306\223\210\f\236\211\203	AB\211\202'	CB\fB\307\f!\211*\207" [alist marker locn arg footnote-pointer-marker-alist make-marker nil Footnote-sort] 4 (#$ . 13190)])
#@45 Insert a footnote numbered ARG, at (point).
(defalias 'Footnote-insert-footnote #[(arg) "\306 \210\307`\"\210\310\311\"\210\312 \210	\313\230\204 \314\315\nP\316\311#\202+\203\210\211@A)b\203\210\214
\2036\317 \210\320S!\210\321=\204\204\322\203K\323\202W\324\325!\326 \325!R\316\311#\203b\327 \203\204\312 \204\204	\313\230\204x\314\315\nP\316\311#\210\202\204\203\204\211@A)b\210)\202\243\330\331!\204\221\324c\210m\203\230\324c\210	\313\230\204\243	\324\261\210`\310\316\"\210\332\")\207" [arg footnote-section-tag footnote-section-tag-regexp footnote-text-marker-alist x footnote-narrow-to-footnotes-when-editing push-mark Footnote-insert-pointer-marker Footnote-insert-numbered-footnote t Footnote-goto-char-point-max "" re-search-backward "^" nil Footnote-narrow-to-footnotes Footnote-goto-footnote 1 re-search-forward "\n\n" "\n" regexp-quote Footnote-current-regexp beginning-of-line looking-at "^$" Footnote-insert-text-marker footnote-spaced-footnotes footnote-start-tag footnote-end-tag old-point] 7 (#$ . 13509)])
(defalias 'Footnote-sort #[(list) "\301\302\"\207" [list sort #[(e1 e2) "@	@W\207" [e1 e2] 2]] 3])
#@124 Return the number of footnote if in footnote text.
Return nil if the cursor is not positioned over the text of
a footnote.
(defalias 'Footnote-text-under-cursor #[nil "`\212\214\306 \210eY\205dX+\205Y	\205Y`	\211@A)Y\205Y\307\310\211\211	8\211\203I\204I`\fAW\203B
S	8@
T\211\202*\204W\f\204W
S	8@+\207" [old-point footnote-text-marker-alist x rc alist-txt i Footnote-narrow-to-footnotes 1 nil] 4 (#$ . 14684)])
#@107 Return the number of the footnote underneath the cursor.
Return nil if the cursor is not over a footnote.
(defalias 'Footnote-under-cursor #[nil "\300`\301\"\206	\302 \207" [get-text-property footnote-number Footnote-text-under-cursor] 3 (#$ . 15127)])
(defalias 'Footnote-make-hole #[nil "\212\306G\307\211\211\211\fW\203P
8

8`\211A@)\310ZW\203I	\2040@\212\311\312\313@!\313@T!#\210\314@@T\n$\210)
T\211\202
	.\207" [footnote-pointer-marker-alist rc alist-txt alist-ptr notes i 0 nil 3 message "Renumbering from %s to %s" Footnote-index-to-string Footnote-renumber footnote-text-marker-alist x] 6])
#@321 Add a numbered footnote.
The number the footnote receives is dependent upon the relative location
of any other previously existing footnotes.
If the variable `footnote-narrow-to-footnotes-when-editing' is set,
the buffer is narrowed to the footnote body.  The restriction is removed
by using `Footnote-back-to-message'.
(defalias 'Footnote-add-footnote #[(&optional arg) "\306	\203'`\307\n!\211@A)@W\203\310 \202)\307	!\211@@)T\202)\311\312\313\"\210\314!\210\315\316\f\317\"!\210`\212\315\203F\320\202G\321!\210\203Q\322 \210)
b*\207" [num footnote-text-marker-alist footnote-pointer-marker-alist x footnote-body-tag-spacing opoint nil last Footnote-make-hole 1 message "Adding footnote %d" Footnote-insert-footnote insert-before-markers make-string 32 "\n\n" "\n" Footnote-narrow-to-footnotes footnote-spaced-footnotes footnote-narrow-to-footnotes-when-editing] 5 (#$ . 15762) "*P"])
#@142 Delete a numbered footnote.
With no parameter, delete the footnote under (point).  With ARG specified,
delete the footnote with that number.
(defalias 'Footnote-delete-footnote #[(&optional arg) "\204\306 \205\342	\203\307\310\311\"!\205\342\312\211\211
\236!\236\f\203/\2044\313\314\"\210\fA\211@\203a\212\n@b\210\315\316\"!\317 \316#!Q\320 \"\203Y\321\224\321\225|\210)\nA\211\2028\212Ab\210`$\203t\322\323\312\324#\202\200\214\312\210\325`\326\312\327 $)|\210)\330\f
\"\330!\"!\331 \210!?\205\341
?\205\341\212%\332\230\204\324\327 &\333\334'P\312\324#S(\335y\210\336\337!\203\300\340 \210(&dW\203\316&\202\317d|*\202\340\327 \210\315\323!\205\340\340\335!)+\207" [arg footnote-prompt-before-deletion locn alist-txt alist-ptr footnote-pointer-marker-alist Footnote-under-cursor y-or-n-p format "Really delete footnote %d?" nil error "Can't delete footnote %d" looking-back regexp-quote Footnote-current-regexp line-beginning-position 0 search-forward "\n\n" t next-single-char-property-change footnote-number Footnote-goto-char-point-max delq Footnote-renumber-footnotes "" re-search-backward "^" -1 looking-at "\n" kill-line footnote-text-marker-alist footnote-start-tag footnote-end-tag footnote-spaced-footnotes footnote-section-tag end footnote-section-tag-regexp start] 7 (#$ . 16676) "*P"])
#@38 Renumber footnotes, starting from 1.
(defalias 'Footnote-renumber-footnotes #[(&optional arg) "\212\306G\307\211\211W\2050\f8\f
8\fT\n@U\204)\310\n@\fT\n	$\210\fT\211\202-\207" [footnote-pointer-marker-alist alist-txt alist-ptr notes i footnote-text-marker-alist 0 nil Footnote-renumber] 6 (#$ . 18036) "*P"])
#@156 Jump to the text of a footnote.
With no parameter, jump to the text of the footnote under (point).  With ARG
specified, jump to the text of that footnote.
(defalias 'Footnote-goto-footnote #[(&optional arg) "\204\306 	\236\211\203\nAb\202@\307=\203=db\210\310\230\204/\311\312\fP!\210\313y\202@	\205@	\211@A)b\202@\314\315!)\207" [arg footnote-text-marker-alist footnote footnote-section-tag footnote-section-tag-regexp x Footnote-under-cursor 0 "" re-search-backward "^" 1 error "I don't see a footnote here"] 4 (#$ . 18367) "P"])
#@229 Move cursor back to footnote referent.
If the cursor is not over the text of a footnote, point is not changed.
If the buffer was narrowed due to `footnote-narrow-to-footnotes-when-editing'
being set it is automatically widened.
(defalias 'Footnote-back-to-message #[(&optional arg) "\304 \211\205	\203
~\210\n\236\211A@)b)\207" [note footnote-narrow-to-footnotes-when-editing footnote-pointer-marker-alist x Footnote-text-under-cursor] 3 (#$ . 18923) "P"])
(byte-code "\302B\303\302!\204=\304\302\305 \306	\307\310#\210\306	\311\312#\210\306	\313\314#\210\306	\315\316#\210\306	\317\320#\210\306	\321\322#\210\306	\323\324#\210	)\"\210\302\207" [current-load-list map footnote-mode-map default-boundp set-default make-sparse-keymap define-key "a" Footnote-add-footnote "b" Footnote-back-to-message "c" Footnote-cycle-style "d" Footnote-delete-footnote "g" Footnote-goto-footnote "r" Footnote-renumber-footnotes "s" Footnote-set-style] 6)
#@46 Keymap used for binding footnote minor mode.
(defvar footnote-minor-mode-map (byte-code "\303 \304	\n#\210)\207" [map footnote-prefix footnote-mode-map make-sparse-keymap define-key] 4) (#$ . 19877))
#@95 Non-nil if Footnote mode is enabled.
Use the command `footnote-mode' to change this variable.
(defvar footnote-mode nil (#$ . 20086))
(make-variable-buffer-local 'footnote-mode)
#@172 Toggle footnote minor mode.
This minor mode provides footnote support for `message-mode'.  To get
started, play around with the following keys:
\{footnote-minor-mode-map}
(defalias 'footnote-mode #[(&optional arg) "\306 	\307=\203\n?\202\310	!\311V\211\203W\312\313!\210\312\314!\210\312\315!\210\312\316!\210\312\317!\210\312\303!\210\312\304!\210\320\321!\203W\322!\323\322\f!\324R\325
\"\204V\326
\327DC\")\330\331\n\203a\332\202b\333\"\210\334\335!\203\203\306 \203v\306 \232\203\203\336\337\n\203\200\340\202\201\341\"\210)\342 \210\n\207" [#1=#:last-message arg footnote-mode footnote-start-tag footnote-end-tag bullet-regexp current-message toggle prefix-numeric-value 0 make-local-variable footnote-style footnote-body-tag-spacing footnote-spaced-footnotes footnote-section-tag footnote-section-tag-regexp boundp filladapt-token-table regexp-quote "?[0-9a-zA-Z]+" "[ 	]" assoc append bullet run-hooks footnote-mode-hook footnote-mode-on-hook footnote-mode-off-hook called-interactively-p any message "Footnote mode %sabled" "en" "dis" force-mode-line-update] 5 (#$ . 20271) (list (or current-prefix-arg 'toggle))])
(byte-code "\301\302\303\304\211%\210\305\306!\207" [footnote-minor-mode-map add-minor-mode footnote-mode footnote-mode-line-string nil provide footnote] 6)
