;ELC ;;; compiled by roland@churchy.gnu.ai.mit.edu on Fri May 12 12:28:14 1995 ;;; from file /gd/gnu/emacs/19.0/lisp/supercite.el ;;; emacs version 19.28.91.1. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "`/gd/gnu/emacs/19.0/lisp/supercite.el' was compiled for Emacs 19")) (require (quote regi)) #@73 *If non-nil, automatically fill each paragraph after it has been cited. (defvar sc-auto-fill-region-p t (#$ . -515)) #@136 *Number of blank lines to leave after mail headers have been nuked. Set to nil, to use whatever blank lines happen to occur naturally. (defvar sc-blank-lines-after-headers 1 (#$ . -639)) #@46 *String comprising first part of a citation. (defvar sc-citation-leader " " (#$ . -832)) #@107 *String comprising third part of a citation. This string is used in both nested and non-nested citations. (defvar sc-citation-delimiter ">" (#$ . -931)) #@56 *String comprising fourth and last part of a citation. (defvar sc-citation-separator " " (#$ . -1090)) #@100 *Regexp describing citation leader for a cited line. This should NOT have a leading `^' character. (defvar sc-citation-leader-regexp "[ ]*" (#$ . -1200)) #@164 *Regexp describing variable root part of a citation for a cited line. This should NOT have a leading `^' character. See also `sc-citation-nonnested-root-regexp'. (defvar sc-citation-root-regexp "[-._a-zA-Z0-9]*" (#$ . -1362)) #@300 *Regexp describing the variable root part of a nested citation. This should NOT have a leading `^' character. This variable is related to `sc-citation-root-regexp' but where as that varariable describes both nested and non-nested citation roots, this variable describes only nested citation roots. (defvar sc-citation-nonnested-root-regexp "[-._a-zA-Z0-9]+" (#$ . -1596)) #@103 *Regexp describing citation delimiter for a cited line. This should NOT have a leading `^' character. (defvar sc-citation-delimiter-regexp "[>]+" (#$ . -1976)) #@103 *Regexp describing citation separator for a cited line. This should NOT have a leading `^' character. (defvar sc-citation-separator-regexp "[ ]*" (#$ . -2143)) #@45 *If non-nil, put a citation on blank lines. (defvar sc-cite-blank-lines-p nil (#$ . -2310)) #@360 *Alist for frame selection during citing. Each element of this list has the following form: (INFOKEY ((REGEXP . FRAME) (REGEXP . FRAME) (...))) Where INFOKEY is a key for `sc-mail-field', REGEXP is a regular expression to match against the INFOKEY's value. FRAME is a citation frame, or a variable containing a citation frame. (defvar sc-cite-frame-alist nil (#$ . -2409)) #@97 *Alist for frame selection during unciting. See the variable `sc-cite-frame-alist' for details. (defvar sc-uncite-frame-alist nil (#$ . -2820)) #@97 *Alist for frame selection during reciting. See the variable `sc-cite-frame-alist' for details. (defvar sc-recite-frame-alist nil (#$ . -2970)) #@42 *Default REGI frame for citing a region. (defvar sc-default-cite-frame (quote ((begin (progn (sc-fill-if-different) (setq sc-tmp-nested-regexp (sc-cite-regexp "") sc-tmp-nonnested-regexp (sc-cite-regexp) sc-tmp-dumb-regexp (concat "\\(" (sc-cite-regexp "") "\\)" (sc-cite-regexp sc-citation-nonnested-root-regexp))))) ("^[ ]*$" (if sc-cite-blank-lines-p (sc-cite-line) (sc-fill-if-different ""))) (sc-reference-tag-string (if (string= sc-reference-tag-string "") (list (quote continue)) nil)) (sc-tmp-dumb-regexp (sc-cite-coerce-dumb-citer)) (sc-tmp-nested-regexp (sc-add-citation-level)) (sc-tmp-nonnested-regexp (sc-cite-coerce-cited-line)) (sc-nested-citation-p (sc-add-citation-level)) (t (sc-cite-line)) (end (sc-fill-if-different "")))) (#$ . -3120)) #@44 *Default REGI frame for unciting a region. (defvar sc-default-uncite-frame (quote (("^[ ]*$" nil) ((sc-cite-regexp) (sc-uncite-line)))) (#$ . -3884)) #@44 *Default REGI frame for reciting a region. (defvar sc-default-recite-frame (quote ((begin (sc-fill-if-different)) ("^[ ]*$" nil) ((sc-cite-regexp) (sc-recite-line (sc-cite-regexp))) (t (sc-cite-line)) (end (sc-fill-if-different "")))) (#$ . -4041)) #@712 *This variable controls automatic citation of yanked text. Legal values are: non-nil -- cite the entire region, regardless of its size nil -- do not cite the region at all -- a number indicating the threshold for citation. When the number of lines in the region is greater than this value, a warning message will be printed and the region will not be cited. Lines in region are counted with `count-lines'. The gathering of attribution information is not affected by the value of this variable. The number of lines in the region is calculated *after* all mail headers are removed. This variable is only consulted during the initial citing via `sc-cite-original'. (defvar sc-cite-region-limit t (#$ . -4298)) #@73 *If non-nil, always confirm attribution string before citing text body. (defvar sc-confirm-always-p t (#$ . -5060)) #@62 *String used when author's attribution cannot be determined. (defvar sc-default-attribution "Anon" (#$ . -5182)) #@55 *String used when author's name cannot be determined. (defvar sc-default-author-name "Anonymous" (#$ . -5301)) #@63 *Non-nil means downcase the attribution and citation strings. (defvar sc-downcase-p nil (#$ . -5418)) #@53 *If non-nil, treat electric references as circular. (defvar sc-electric-circular-p t (#$ . -5526)) #@56 *Hook for `sc-electric-mode' electric references mode. (defvar sc-electric-mode-hook nil (#$ . -5631)) #@38 *Use electric references if non-nil. (defvar sc-electric-references-p nil (#$ . -5740)) #@60 *If non-nil, delete all leading white space before citing. (defvar sc-fixup-whitespace-p nil (#$ . -5834)) #@50 *Hook which gets run once after Supercite loads. (defvar sc-load-hook nil (#$ . -5947)) #@68 *Hook which gets run before each invocation of `sc-cite-original'. (defvar sc-pre-hook nil (#$ . -6041)) #@67 *Hook which gets run after each invocation of `sc-cite-original'. (defvar sc-post-hook nil (#$ . -6152)) #@48 *Warn if mail headers don't conform to RFC822. (defvar sc-mail-warn-if-non-rfc822-p t (#$ . -6263)) #@68 *Value returned by `sc-mail-field' if field isn't in mail headers. (defvar sc-mumble "" (#$ . -6369)) #@474 *Name list components which are filtered out as noise. This variable contains an association list where each element is of the form: (REGEXP . POSITION). REGEXP is a regular expression which matches the name list component. Match is performed using `string-match'. POSITION is the position in the name list which can match the regular expression, starting at zero for the first element. Use `last' to match the last element in the list and `any' to match all elements. (defvar sc-name-filter-alist (quote (("^\\(Mr\\|Mrs\\|Ms\\|Dr\\)[.]?$" . 0) ("^\\(Jr\\|Sr\\)[.]?$" . last) ("^ASTS$" . 0) ("^[I]+$" . last))) (#$ . -6478)) #@125 *Controls whether to use nested or non-nested citation style. Non-nil uses nested citations, nil uses non-nested citations. (defvar sc-nested-citation-p nil (#$ . -7114)) #@320 *Controls mail header nuking. Used in conjunction with `sc-nuke-mail-header-list'. Legal values are: `all' -- nuke all mail headers `none' -- don't nuke any mail headers `specified' -- nuke headers specified in `sc-nuke-mail-header-list' `keep' -- keep headers specified in `sc-nuke-mail-header-list' (defvar sc-nuke-mail-headers (quote all) (#$ . -7292)) #@200 *List of mail header regexps to remove or keep in body of reply. This list contains regular expressions describing the mail headers to keep or nuke, depending on the value of `sc-nuke-mail-headers'. (defvar sc-nuke-mail-header-list nil (#$ . -7673)) #@1741 *Specifies what to use as the attribution string. Supercite creates a list of possible attributions when it scans the mail headers from the original message. Each attribution choice is associated with a key in an attribution alist. Supercite tries to pick a "preferred" attribution by matching the attribution alist keys against the elements in `sc-preferred-attribution-list' in order. The first non-empty string value found is used as the preferred attribution. Note that Supercite now honors the X-Attribution: mail field. If present in the original message, the value of this field should always be used to select the most preferred attribution since it reflects how the original author would like to be distinguished. It should be considered bad taste to put any attribution preference key before "x-attribution" in this list, except perhaps for "sc-lastchoice" (see below). Supercite remembers the last attribution used when reciting an already cited paragraph. This attribution will always be saved with the "sc-lastchoice" key, which can be used in this list. Note that the last choice is always reset after every call of `sc-cite-original'. Barring error conditions, the following preferences are always present in the attribution alist: "emailname" -- email terminus name "initials" -- initials of author "firstname" -- first name of author "lastname" -- last name of author "middlename-1" -- first middle name of author "middlename-2" -- second middle name of author ... Middle name indexes can be any positive integer greater than 0, although it is unlikely that many authors will supply more than one middle name, if that many. The string of all middle names is associated with the key "middlenames". (defvar sc-preferred-attribution-list (quote ("sc-lastchoice" "x-attribution" "firstname" "initials" "lastname")) (#$ . -7931)) #@742 *An alist for selecting preferred attribution based on mail headers. Each element of this list has the following form: (INFOKEY ((REGEXP . ATTRIBUTION) (REGEXP . ATTRIBUTION) (...))) Where INFOKEY is a key for `sc-mail-field', REGEXP is a regular expression to match against the INFOKEY's value. ATTRIBUTION can be a string or a list. If its a string, then it is the attribution that is selected by `sc-select-attribution'. If it is a list, it is `eval'd and the return value must be a string, which is used as the selected attribution. Note that the variable `sc-preferred-attribution-list' must contain an element of the string "sc-consult" for this variable to be consulted during attribution selection. (defvar sc-attrib-selection-list nil (#$ . -9806)) #@47 *Hook to run before selecting an attribution. (defvar sc-attribs-preselect-hook nil (#$ . -10604)) #@71 *Hook to run after selecting an attribution, but before confirmation. (defvar sc-attribs-postselect-hook nil (#$ . -10709)) #@46 *Hook to run before citing a region of text. (defvar sc-pre-cite-hook nil (#$ . -10839)) #@48 *Hook to run before unciting a region of text. (defvar sc-pre-uncite-hook nil (#$ . -10934)) #@48 *Hook to run before reciting a region of text. (defvar sc-pre-recite-hook nil (#$ . -11033)) #@125 *Index into `sc-rewrite-header-list' specifying preferred header style. Index zero accesses the first function in the list. (defvar sc-preferred-header-style 4 (#$ . -11133)) #@62 *String used at the beginning of built-in reference headers. (defvar sc-reference-tag-string ">>>>> " (#$ . -11314)) #@244 *List of reference header rewrite functions. The variable `sc-preferred-header-style' controls which function in this list is chosen for automatic reference header insertions. Electric reference mode will cycle through this list of functions. (defvar sc-rewrite-header-list (quote ((sc-no-header) (sc-header-on-said) (sc-header-inarticle-writes) (sc-header-regarding-adds) (sc-header-attributed-writes) (sc-header-author-writes) (sc-header-verbose) (sc-no-blank-line-or-header))) (#$ . -11438)) #@116 *Regular expression describing the separator between names and titles. Set to nil to treat entire field as a name. (defvar sc-titlecue-regexp "\\s +-+\\s +" (#$ . -11940)) #@220 *Controls what happens when the preferred attribution cannot be found. If non-nil, then `sc-default-attribution' will be used. If nil, then some secondary scheme will be employed to find a suitable attribution string. (defvar sc-use-only-preference-p nil (#$ . -12119)) #@27 Supercite version number. (defconst sc-version "3.1" (#$ . 12396)) #@47 Address accepting submissions of bug reports. (defconst sc-help-address "supercite-help@anthem.nlm.nih.gov" (#$ . 12469)) #@61 Alist of mail header information gleaned from reply buffer. (defvar sc-mail-info nil (#$ . 12597)) #@44 Alist of attributions for use when citing. (defvar sc-attributions nil (#$ . 12702)) #@150 A list describing what version of Emacs we're running on. Known flavors are: All GNU18's: (v18 GNU) FSF19.x : (v19 GNU) Lucid19.x : (v19 Lucid) (defconst sc-emacs-features (byte-code "\fOǘ\f\" \n*D" [v18 GNU flavor version emacs-version 0 2 "19" v19 string-match "Lucid" Lucid] 3) (#$ . 12794)) #@47 Temporary regepx describing nested citations. (defvar sc-tmp-nested-regexp nil (#$ . 13120)) #@51 Temporary regexp describing non-nested citations. (defvar sc-tmp-nonnested-regexp nil (#$ . 13219)) #@72 Temp regexp describing non-nested citation cited with a nesting citer. (defvar sc-tmp-dumb-regexp nil (#$ . 13325)) #@31 Supercite minor mode on flag. (defvar sc-minor-mode nil (#$ . 13447)) #@30 Supercite minor mode string. (defvar sc-mode-string " SC" (#$ . 13523)) (byte-code "!!!" [make-variable-buffer-local sc-mail-info sc-attributions sc-minor-mode] 2) #@94 *Key binding to install Supercite keymap. If this is nil, Supercite keymap is not installed. (defvar sc-mode-map-prefix "" (#$ . -13702)) #@58 Keymap for sub-keymap of setting and toggling functions. (defvar sc-T-keymap nil (#$ . 13848)) (byte-code "g ################" [sc-T-keymap make-sparse-keymap define-key "a" sc-S-preferred-attribution-list "b" sc-T-mail-nuke-blank-lines "c" sc-T-confirm-always "d" sc-T-downcase "e" sc-T-electric-references "f" sc-T-auto-fill-region "h" sc-T-describe "l" sc-S-cite-region-limit "n" sc-S-mail-nuke-mail-headers "N" sc-S-mail-header-nuke-list "o" sc-T-electric-circular "p" sc-S-preferred-header-style "s" sc-T-nested-citation "u" sc-T-use-only-preferences "w" sc-T-fixup-whitespace "?"] 4) #@34 Keymap for Supercite quasi-mode. (defvar sc-mode-map nil (#$ . 14531)) (byte-code "\\ ##############" [sc-mode-map make-sparse-keymap define-key "c" sc-cite-region "f" sc-mail-field-query "g" sc-mail-process-headers "h" sc-describe "i" sc-insert-citation "o" sc-open-line "r" sc-recite-region "" sc-raw-mode-toggle "u" sc-uncite-region "v" sc-version "w" sc-insert-reference "" sc-T-keymap "" sc-submit-bug-report "?"] 4) #@57 Keymap for `sc-electric-mode' electric references mode. (defvar sc-electric-mode-map nil (#$ . 15040)) (byte-code "I ###########" [sc-electric-mode-map make-sparse-keymap define-key "p" sc-eref-prev "n" sc-eref-next "s" sc-eref-setn "j" sc-eref-jump "x" sc-eref-abort "q" " " sc-eref-exit "\n" "g" sc-eref-goto "?" describe-mode ""] 4) #@60 Keymap for minibuffer confirmation of attribution strings. (defvar sc-minibuffer-local-completion-map nil (#$ . 15445)) (byte-code "\n!##" [sc-minibuffer-local-completion-map copy-keymap minibuffer-local-completion-map define-key "" sc-toggle-fn " " self-insert-command] 4) #@60 Keymap for minibuffer confirmation of attribution strings. (defvar sc-minibuffer-local-map nil (#$ . 15744)) (byte-code "\n!#" [sc-minibuffer-local-map copy-keymap minibuffer-local-map define-key "" sc-toggle-fn] 4) #@106 Compatibility between Emacs 18 and 19 `completing-read'. In version 18, the HISTORY argument is ignored. (defalias 'sc-completing-read #[(prompt table &optional predicate require-match initial-contents history) " > \f & \f !%" [v19 sc-emacs-features completing-read prompt table predicate require-match initial-contents history] 7 (#$ . 15981)]) #@102 Compatibility between Emacs 18 and 19 `read-string'. In version 18, the HISTORY argument is ignored. (defalias 'sc-read-string #[(prompt &optional initial-contents history) " > \f\" \f\"" [v19 sc-emacs-features read-string prompt initial-contents] 3 (#$ . 16358)]) (byte-code "!\"M! \"$M!2\"6M" [fboundp match-string defalias sc-submatch #[(matchnum &optional string) "  O {" [string matchnum] 3 "Returns `match-beginning' and `match-end' sub-expression for MATCHNUM.\nIf optional STRING is provided, take sub-expression using `substring'\nof argument, otherwise use `buffer-substring' on current buffer. Note\nthat `match-data' must have already been generated and no error\nchecking is performed by this function."] member sc-member #[(elt list) "" [elt-is-member (byte-code " @\"Ać" [list elt throw elt-is-member nil] 4)] 2 "Like `memq', but uses `equal' instead of `eq'.\nEmacs19 has a builtin function `member' which does exactly this."] string-text sc-string-text #[(string) " ! G $ )" [copy-sequence string set-text-properties 0 nil] 5 "Return STRING with all text properties removed."]] 3) #@510 Ask a question in the minibuffer requiring a single character answer. This function is kind of an extension of `y-or-n-p' where a single letter is used to answer a question. Question is formed from ALIST which has members of the form: (WORD . LETTER). WORD is the long word form, while LETTER is the letter for selecting that answer. The selected letter is returned, or nil if the question was not answered. Note that WORD is a string and LETTER is a character. All LETTERs in the list should be unique. (defalias 'sc-ask #[(alist) "\n#\n#R  >   ;Ή \" >=  P >L !P  *w  !# >o !\" > ! !  !) \"####\n\"\" \"@#\"A  > !  !# >\"  =P * > ! +" [mapconcat #[(elt) "@" [elt] 1] alist ", " "? (" #[(elt) " A!" [char-to-string elt] 2] "/" ") " prompt p Lucid sc-emacs-features allocate-event event t inhibit-quit cursor-in-echo-area message "%s" v18 read-char next-command-event read-event quit-flag nil "%s%s" single-key-description deallocate-event signal quit key-press-event-p event-key key event-to-character elt char rassq button-release-event-p ding y-or-n-p discard-input "Try again. "] 7 (#$ . 17558)]) #@64 Find a match in the info alist that matches a regexp in ALIST. (defalias 'sc-scan-info-alist #[(alist) "\fQ\f@@! A@  J @\n@ \nA\f \"A\f F A +\fA,\n*" ["" nil rtnvalue sc-mumble alist elem infokey sc-mail-field infoval mlist ml-elem regexp thing string-match] 4 (#$ . 18858)]) #@25 Start of header fields. (defvar sc-mail-headers-start nil (#$ . 19189)) #@23 End of header fields. (defvar sc-mail-headers-end nil (#$ . 19267)) #@50 For minibuffer completion on mail field queries. (defvar sc-mail-field-history nil (#$ . 19341)) #@56 For minibuffer completion on mail field modifications. (defvar sc-mail-field-modification-history nil (#$ . 19444)) #@50 Regi frame for glomming mail header information. (defvar sc-mail-glom-frame (quote ((begin (setq sc-mail-headers-start (point))) ("^x-attribution:[ ]+.*$" (sc-mail-fetch-field t) nil t) ("^\\S +:.*$" (sc-mail-fetch-field) nil t) ("^$" (list (quote abort) (quote (step . 0)))) ("^[ ]+" (sc-mail-append-field)) (sc-mail-warn-if-non-rfc822-p (sc-mail-error-in-mail-field)) (end (setq sc-mail-headers-end (point))))) (#$ . 19566)) #@140 Insert a key and value into `sc-mail-info' alist. If optional ATTRIBS-P is non-nil, the key/value pair is placed in `sc-attributions' too. (defalias 'sc-mail-fetch-field #[(&optional attribs-p) "\n\"2\n\"!\n\"!B \nB\n 1 \fB\f+͇" [string-match "^\\(\\S *\\)\\s *:\\s +\\(.*\\)$" curline sc-string-text sc-submatch 1 key 2 val keyval sc-mail-info attribs-p sc-attributions nil] 5 (#$ . 20002)]) #@69 Append a continuation line onto the last fetched mail field's info. (defalias 'sc-mail-append-field #[nil "@\f\" A\f\"!Q)ɇ" [sc-mail-info keyval string-match "^\\s *\\(.*\\)$" curline " " sc-string-text sc-submatch 1 nil] 8 (#$ . 20431)]) #@59 Issue warning that mail headers don't conform to RFC 822. (defalias 'sc-mail-error-in-mail-field #[nil "G^GWÂ\nO #+ !͇" [curline 10 len "..." "" ellipsis "Mail header \"%s%s\" doesn't conform to RFC 822. skipping..." msg message 0 beep sit-for 2 nil] 6 (#$ . 20695)]) #@36 True if the last header was nuked. (defvar sc-mail-last-header-nuked-p nil (#$ . 20997)) #@36 Nuke the current mail header line. (defalias 'sc-mail-nuke-line #[nil "!!|Ç" [regi-pos bol bonl ((step . -1))] 3 (#$ . 21092)]) #@59 Delete current-line and set up for possible continuation. (defalias 'sc-mail-nuke-header-line #[nil " " [t sc-mail-last-header-nuked-p sc-mail-nuke-line] 1 (#$ . 21232)]) #@65 Delete a continuation line if the last header line was deleted. (defalias 'sc-mail-nuke-continuation-line #[nil " " [sc-mail-last-header-nuked-p sc-mail-nuke-line] 1 (#$ . 21413)]) #@136 Leave some blank lines after original mail headers are nuked. The number of lines left is specified by `sc-blank-lines-after-headers'. (defalias 'sc-mail-cleanup-blank-lines #[nil "(~xy y!\"!!|\")‡" [sc-blank-lines-after-headers " \n" nil 1 delete-blank-lines 0 looking-at "[ ]*$" regi-pos bol bonl insert-char 10] 3 (#$ . 21607)]) #@46 Build the regiframe for nuking mail headers. (defalias 'sc-mail-build-nuke-frame #[nil "\f=6\f=6\f=+6\f=6\f\"\nB\n$ J DC ?P Z DC&+" [nil nonentry-func entry-func every-func sc-nuke-mail-headers all (progn (forward-line -1) (sc-mail-nuke-line)) specified (sc-mail-nuke-header-line) (setq sc-mail-last-header-nuked-p nil) keep (setq sc-mail-last-header-nuked-p nil) (sc-mail-nuke-header-line) none error "Illegal value for sc-nuke-mail-headers: %s" append regi-mapcar sc-nuke-mail-header-list t "^\\S +:.*$" (("^[ ]+" (sc-mail-nuke-continuation-line))) ((begin (setq sc-mail-last-header-zapped-p nil))) ((end (sc-mail-cleanup-blank-lines))) every] 8 (#$ . 21975)]) #@197 Process original mail message's mail headers. After processing, mail headers may be nuked. Header information is stored in `sc-mail-info', and any old information is lost unless an error occurs. (defalias 'sc-mail-process-headers #[(start end) " !\n! # %!\f -  #*" [copy-alist sc-mail-info sc-attributions attribs info nil regi-interpret sc-mail-glom-frame start end message "No mail headers found! Restoring old information." sc-mail-build-nuke-frame sc-mail-headers-start sc-mail-headers-end] 4 (#$ . 22706) "r"]) #@171 Return the mail header field value associated with FIELD. If there was no mail header with FIELD as its key, return the value of `sc-mumble'. FIELD is case insensitive. (defalias 'sc-mail-field #[(field) " \n\"A\n " [assoc field sc-mail-info sc-mumble] 3 (#$ . 23261)]) #@149 View the value of a mail field. With `\[universal-argument]', prompts for action on mail field. Action can be one of: View, Modify, Add, or Delete. (defalias 'sc-mail-field-query #[(arg) "\n\n ! ?? \"@P =?*& =E \"A# =[ \" \" = \"A\"{ABPA#) =P!B B +" [(("view" . 118) ("modify" . 109) ("add" . 97) ("delete" . 100)) alist arg 118 sc-ask action nil key sc-completing-read rassq " information key: " sc-mail-info 97 noexit sc-mail-field-history message "%s: %s" assoc 100 delq 109 keyval sc-member sc-mail-field-modification-history sc-read-string ": "] 7 (#$ . 23544) "P"]) #@50 History for confirmation of attribution strings. (defvar sc-attribution-confirmation-history nil (#$ . 24233)) #@51 History for confirmation of attribution prefixes. (defvar sc-citation-confirmation-history nil (#$ . 24350)) #@293 Extract the author's email terminus from email address FROM. Match addresses of the style ``name%[stuff].'' when called with DELIM of "%" and addresses of the style ``[stuff]name@[stuff]'' when called with DELIM "@". If DELIM is nil or not provided, matches addresses of the style ``name''. (defalias 'sc-attribs-%@-addresses #[(from &optional delim) "\nP # Ĕĕ\nĂZO" [string-match "[-a-zA-Z0-9_.]+" delim from 0 1] 4 (#$ . 24466)]) #@127 Extract the author's email terminus from email address FROM. Match addresses of the style ``[stuff]![stuff]...!name[stuff].'' (defalias 'sc-attribs-!-addresses #[(from) "G#Õ # T\fU Â!ZO+" [from string-match "![-a-zA-Z0-9_.]+\\([^-!a-zA-Z0-9_.]\\|$\\)" 0 mend mstart eos 1] 5 (#$ . 24922)]) #@110 Extract the author's email terminus from email address FROM. Match addresses of the style ``.'' (defalias 'sc-attribs-<>-addresses #[(from) "\n\" \n\"" [string-match "<\\(.*\\)>" from sc-submatch 1] 3 (#$ . 25241)]) #@109 Get the full email address path from FROM. AUTHOR is the author's name (which is removed from the address). (defalias 'sc-get-address #[(from author) "G\fQ#9ƕ OHU3GSHU3GSO5)I#H\"I)" [from eos string-match "\\(^\\|^\"\\)" author "\\(\\s +\\|\"\\s +\\)" 0 address 60 62 1 "[-a-zA-Z0-9!@%._]+" sc-submatch ""] 5 (#$ . 25484)]) #@40 Get the email terminus name from FROM. (defalias 'sc-attribs-emailname #[(from) " \"$ \"$ !$ !$ !$ O" [sc-attribs-%@-addresses from "%" "@" sc-attribs-!-addresses sc-attribs-<>-addresses 0 10] 3 (#$ . 25862)]) #@135 Extract the specified substring of STRING from START to END. EXTEND is the number of characters on each side to extend the substring. (defalias 'sc-name-substring #[(string start end extend) " \\\n Z \f \f# O*" [start extend end eos sos string string-match sc-titlecue-regexp] 6 (#$ . 26099)]) #@99 Extract the name string from FROM. This should be the author's full name minus an optional title. (defalias 'sc-attribs-extract-namestring #[(from) " #ĕ$- #ĕ$- #ŕ$- ! z GS\n \nXV  H>V T =\n Vq \nH>q\nS\nX  \nTO*)" [sc-name-substring from string-match "(.*)" 0 1 "\".*\"" "\\([-.a-zA-Z0-9_]+\\s +\\)+<" sc-attribs-emailname namestring eos bos (32 9) (32 9)] 7 (#$ . 26413)]) #@127 Convert NAMESTRING to a list of names. example: (sc-namestring-to-list "John Xavier Doe") => ("John" "Xavier" "Doe") (defalias 'sc-attribs-chop-namestring #[(namestring) "\n\"\n\"\nƕO!B" [string-match "\\([ ]*\\)\\([^ ._]+\\)\\([ ]*\\)" namestring sc-submatch 2 sc-attribs-chop-namestring 3 nil] 5 (#$ . 26862)]) #@50 Extract the author's initials from the NAMELIST. (defalias 'sc-attribs-strip-initials #[(namelist) "\n#" [mapconcat #[(name) " GW O" [0 name 1] 3] namelist ""] 4 (#$ . 27204)]) #@187 Guess attribution string on current line. If attribution cannot be guessed, nil is returned. Optional STRING if supplied, is used instead of the line point is on in the current buffer. (defalias 'sc-guess-attribution #[(&optional string) " \f!!{ #Uuu #7Uu \"u #VUuu #oUu+" [0 string regi-pos bol eol nil attribution start string-match sc-citation-leader-regexp -1 sc-citation-root-regexp 1 sc-submatch sc-citation-delimiter-regexp sc-citation-separator-regexp] 6 (#$ . 27399)]) #@67 Filter out noise in NAMELIST according to `sc-name-filter-alist'. (defalias 'sc-attribs-filter-namelist #[(namelist) "G‰\"\f\" ," [namelist -1 nil filtered-list keepers position elements mapcar #[(name) "T \"\nB)" [position t keep-p mapcar #[(filter) "@A\n\f\"0  U, =& SU, =0ɉ\n*" [filter pos regexp string-match name position last elements any nil keep-p] 3] sc-name-filter-alist keepers] 3] #[(position) " 8\nB" [position namelist filtered-list] 2]] 4 (#$ . 27973)]) #@121 Extract attribution information from FROM. This populates the `sc-attributions' with the list of possible attributions. (defalias 'sc-attribs-chop-address #[(from) ";GW! !!A!\n@ \nA!\f\n@ !!\f# \fX  B BBBF\" BB BBBB! \"B! \"B! \"B .\"..\f/B.B." [from 0 "" sc-mumble sc-attribs-extract-namestring namestring sc-attribs-filter-namelist sc-attribs-chop-namestring namelist reverse revnames firstname midnames lastname sc-attribs-strip-initials initials sc-attribs-emailname emailname 1 n nil author middlenames mapconcat #[(midname) "\n\"\n\"BB\fBB\nT*" [format "middlename-%d" n "sc-middlename-%d" key-mail key-attribs midname sc-attributions sc-mail-info] 5] " " append "firstname" "lastname" "emailname" "initials" sc-attributions "sc-firstname" "sc-middlenames" "sc-lastname" "sc-emailname" "sc-initials" "sc-author" "sc-from-address" sc-get-address sc-mail-field "from" "sc-reply-address" "reply-to" "sc-sender-address" "sender" sc-mail-info sc-default-author-name] 13 (#$ . 28513)]) #@61 Used to toggle between attribution input or citation input. (defvar sc-attrib-or-cite nil (#$ . 29650)) #@93 Toggle between attribution selection and citation selection. Only used during confirmation. (defalias 'sc-toggle-fn #[nil "?\"" [sc-attrib-or-cite throw sc-reconfirm t] 3 (#$ . 29760) nil]) #@622 Select an attribution from `sc-attributions'. Variables involved in selection process include: `sc-preferred-attribution-list' `sc-use-only-preference-p' `sc-confirm-always-p' `sc-default-attribution' `sc-attrib-selection-list'. Runs the hook `sc-attribs-preselect-hook' before selecting an attribution and the hook `sc-attribs-postselect-hook' after making the selection but before querying is performed. During `sc-attribs-postselect-hook' the variable `citation' is bound to the auto-selected citation string and the variable `attribution' is bound to the auto-selected attribution string. (defalias 'sc-select-attribution #[nil "!\nÉ\f o @ ʘV\f! - AR ;< R , said:" unless: 1. the "from" field cannot be found, in which case nothing is inserted; 2. the "date" field is missing in which case only the from part is printed. (defalias 'sc-header-on-said #[nil " \n\f!#\nʱ*" ["" sc-whofrom whofrom sc-mumble sc-reference-tag-string sc-hdr "On " sc-mail-field "date" ", " " said:\n"] 5 (#$ . 38225)]) #@113 "In article , writes:" Treats "message-id" and "from" fields similar to `sc-header-on-said'. (defalias 'sc-header-inarticle-writes #[nil "!  !# ʱ*" ["" sc-mail-field "from" whofrom sc-mumble sc-reference-tag-string sc-hdr "In article " "message-id" ", " " writes:\n"] 5 (#$ . 38603)]) #@104 "Regarding ; adds:" Treats "subject" and "from" fields similar to `sc-header-on-said'. (defalias 'sc-header-regarding-adds #[nil " \n\f!#\nʱ*" ["" sc-whofrom whofrom sc-mumble sc-reference-tag-string sc-hdr "Regarding " sc-mail-field "subject" "; " " adds:\n"] 5 (#$ . 38930)]) #@117 "" ==
writes: Treats these fields in a similar manner to `sc-header-on-said'. (defalias 'sc-header-attributed-writes #[nil " \n2\f!#!#!$/!$/ѱ*" ["" sc-whofrom whofrom sc-mumble sc-reference-tag-string sc-hdr "\"" sc-mail-field "sc-attribution" "\" == " "sc-author" " " "<" "sc-from-address" ">" t "sc-reply-address" " writes:\n"] 8 (#$ . 39246)]) #@21 writes: (defalias 'sc-header-author-writes #[nil " \n\f!\"ȱ*" ["" sc-whofrom whofrom sc-mumble sc-reference-tag-string sc-hdr sc-mail-field "sc-author" " writes:\n"] 5 (#$ . 39673)]) #@31 Very verbose, some say gross. (defalias 'sc-header-verbose #[nil " \n\fz P!# !$# \fQ P!# P!$J!$J) P!# P!# P!# P!# P!# +" ["" sc-whofrom sc-reference-tag-string tag whofrom sc-mumble sc-hdr "On " sc-mail-field "date" ",\n" "sc-author" "\n" t "from the organization of " "organization" "who can be reached at: " rtag "sc-from-address" "sc-reply-address" "(whose comments are cited below with \"" "sc-citation" "\"),\n" "had this to say in article " "message-id" "in newsgroups " "newsgroups" "concerning the subject of " "subject" "(see " "references" " for more details)\n"] 12 (#$ . 39888)]) #@50 Supercite electric reference mode's buffer name. (defconst sc-electric-bufname " *sc-erefs* " (#$ . 40560)) #@35 Current electric reference style. (defvar sc-eref-style 0 (#$ . 40674)) #@92 Returns INDEX if it is a valid index into `sc-rewrite-header-list'. Otherwise returns nil. (defalias 'sc-valid-index-p #[(index) " ! \nGW " [natnump index sc-rewrite-header-list] 2 (#$ . 40752)]) #@141 Insert the selected reference header in the current buffer. Optional NOMSG, if non-nil, inhibits printing messages, unless an error occurs. (defalias 'sc-eref-insert-selected #[(&optional nomsg) " 8ŏ)" [sc-eref-style sc-rewrite-header-list ref err (byte-code " !ed\"\f Uɂ %)" [eval ref count-lines lines nomsg message "Ref header %d [%d line%s]: %s" sc-eref-style 1 "" "s"] 6) ((void-function (byte-code "\nA@ # " [message "Symbol's function definition is void: %s (Header %d)" err sc-eref-style beep] 4)))] 3 (#$ . 40963)]) #@395 Mode for viewing Supercite reference headers. Commands are: \{sc-electric-mode-map} `sc-electric-mode' is not intended to be run interactively, but rather accessed through Supercite's electric reference feature. See `sc-insert-reference' for more details. Optional ARG is the initial header style to use, unless not supplied or invalid, in which case `sc-preferred-header-style' is used. (defalias 'sc-electric-mode #[(&optional arg) " !\f!!ɋ)# !)" [sc-mail-info info sc-valid-index-p arg sc-preferred-header-style 0 sc-eref-style get-buffer-create sc-electric-bufname ((byte-code " !  \n\f!!! ," [pop-to-buffer sc-electric-bufname kill-all-local-variables info t "SC Electric Refs" sc-electric-mode major-mode mode-name buffer-read-only sc-mail-info use-local-map sc-electric-mode-map sc-eref-show sc-eref-style run-hooks sc-electric-mode-hook recursive-edit] 4)) sc-eref-insert-selected kill-buffer] 2 (#$ . 41527)]) #@51 Show reference INDEX in `sc-rewrite-header-list'. (defalias 'sc-eref-show #[(index) " G ! > W(\nS> \"Ƃ> \nY>7Ƃ> \"\nS \fq eb ed\" SU?VvZ!]Z!." ["No %ing reference headers in list." sc-rewrite-header-list last msg sc-valid-index-p index 0 sc-electric-circular-p error "preced" "follow" sc-eref-style sc-electric-bufname nil buffer-read-only erase-buffer sc-eref-insert-selected count-lines window-height winlines hdrlines enlarge-window shrink-window window-min-height] 5 (#$ . 42516)]) #@41 Display next reference in other buffer. (defalias 'sc-eref-next #[nil " T!" [sc-eref-show sc-eref-style] 2 (#$ . 43090) nil]) #@45 Display previous reference in other buffer. (defalias 'sc-eref-prev #[nil " S!" [sc-eref-show sc-eref-style] 2 (#$ . 43224) nil]) #@45 Set reference header selected as preferred. (defalias 'sc-eref-setn #[nil "\"" [sc-eref-style sc-preferred-header-style message "Preferred reference style set to header %d."] 3 (#$ . 43362) nil]) #@115 Show reference style indexed by REFNUM. If REFNUM is an invalid index, don't go to that reference and return nil. (defalias 'sc-eref-goto #[(refnum) " !\n ! GS$" [sc-valid-index-p refnum sc-eref-show error "Invalid reference: %d. (Range: [%d .. %d])" 0 sc-rewrite-header-list] 5 (#$ . 43571) "NGoto Reference: "]) #@43 Set reference header to preferred header. (defalias 'sc-eref-jump #[nil " !" [sc-eref-show sc-preferred-header-style] 2 (#$ . 43902) nil]) #@64 Exit from electric reference mode without inserting reference. (defalias 'sc-eref-abort #[nil " " [nil sc-eref-style exit-recursive-edit] 1 (#$ . 44049) nil]) #@66 Exit from electric reference mode and insert selected reference. (defalias 'sc-eref-exit #[nil " " [exit-recursive-edit] 1 (#$ . 44218) nil]) #@412 Insert, at point, a reference header in the body of the reply. Numeric ARG indicates which header style from `sc-rewrite-header-list' to use when rewriting the header. No supplied ARG indicates use of `sc-preferred-header-style'. With just `\[universal-argument]', electric reference insert mode is entered, regardless of the value of `sc-electric-references-p'. See `sc-electric-mode' for more information. (defalias 'sc-insert-reference #[(arg) ": ! ! % !(!)" [arg sc-electric-mode sc-valid-index-p sc-preferred-header-style 0 preference sc-electric-references-p sc-eref-insert-selected t] 2 (#$ . 44369) "P"]) #@108 Toggle, in one fell swoop, two important SC variables: `sc-fixup-whitespace-p' and `sc-auto-fill-region-p' (defalias 'sc-raw-mode-toggle #[nil "? ? " [sc-fixup-whitespace-p sc-auto-fill-region-p sc-set-mode-string force-mode-line-update] 1 (#$ . 45022) nil]) #@127 Boolean toggle VARIABLE's value. VARIABLE must be a bound symbol. Nil values change to t, non-nil values are changed to nil. (defalias 'sc-toggle-var #[(variable) "\nJ\n\n!?\"$ " [message "%s changed from %s to %s" variable set-variable eval-expression sc-set-mode-string] 8 (#$ . 45296)]) #@508 Set the Supercite VARIABLE. This function mimics `set-variable', except that the variable to set is determined non-interactively. The value is queried for in the minibuffer exactly the same way that `set-variable' does it. You can see the current value of the variable when the minibuffer is querying you by typing `C-h'. Note that the format is changed slightly from that used by `set-variable' -- the current value is printed just after the variable's name instead of at the bottom of the help window. (defalias 'sc-set-variable #[(var) "\f\f\"!L* " [(funcall myhelp) minibuffer-help-form #[nil "\n!\n!!\nJ!!)!\n\"O!q )͑" ["*Help*" prin1 var boundp 20 print-length princ " (Current value: " ")" "\n\nDocumentation:\n" documentation-property variable-documentation 1 nil standard-output help-mode] 5] myhelp var eval-minibuffer format "Set %s to value: " sc-set-mode-string] 5 (#$ . 45602)]) (defalias 'sc-toggle-symbol '(macro . #[(rootname) " P!C Q!DD" [defun intern "sc-T-" rootname nil interactive sc-toggle-var quote "sc-" "-p"] 10])) (defalias 'sc-setvar-symbol '(macro . #[(rootname) " P!C P!DD" [defun intern "sc-S-" rootname nil interactive sc-set-variable quote "sc-"] 9])) (defalias 'sc-T-confirm-always #[nil "!" [sc-toggle-var sc-confirm-always-p] 2 nil nil]) (defalias 'sc-T-downcase #[nil "!" [sc-toggle-var sc-downcase-p] 2 nil nil]) (defalias 'sc-T-electric-references #[nil "!" [sc-toggle-var sc-electric-references-p] 2 nil nil]) (defalias 'sc-T-auto-fill-region #[nil "!" [sc-toggle-var sc-auto-fill-region-p] 2 nil nil]) (defalias 'sc-T-mail-nuke-blank-lines #[nil "!" [sc-toggle-var sc-mail-nuke-blank-lines-p] 2 nil nil]) (defalias 'sc-T-nested-citation #[nil "!" [sc-toggle-var sc-nested-citation-p] 2 nil nil]) (defalias 'sc-T-electric-circular #[nil "!" [sc-toggle-var sc-electric-circular-p] 2 nil nil]) (defalias 'sc-T-use-only-preferences #[nil "!" [sc-toggle-var sc-use-only-preferences-p] 2 nil nil]) (defalias 'sc-T-fixup-whitespace #[nil "!" [sc-toggle-var sc-fixup-whitespace-p] 2 nil nil]) (defalias 'sc-S-preferred-attribution-list #[nil "!" [sc-set-variable sc-preferred-attribution-list] 2 nil nil]) (defalias 'sc-S-preferred-header-style #[nil "!" [sc-set-variable sc-preferred-header-style] 2 nil nil]) (defalias 'sc-S-mail-nuke-mail-headers #[nil "!" [sc-set-variable sc-mail-nuke-mail-headers] 2 nil nil]) (defalias 'sc-S-mail-header-nuke-list #[nil "!" [sc-set-variable sc-mail-header-nuke-list] 2 nil nil]) (defalias 'sc-S-cite-region-limit #[nil "!" [sc-set-variable sc-cite-region-limit] 2 nil nil]) #@418 Supercite provides a number of key bindings which simplify the process of setting or toggling certain variables controlling its operation. Note on function names in this list: all functions of the form `sc-S-' actually call `sc-set-variable' on the corresponding `sc-' variable. All functions of the form `sc-T-' call `sc-toggle-var' on the corresponding `sc--p' variable. \{sc-T-keymap} (defalias 'sc-T-describe #[nil "!" [describe-function sc-T-describe] 2 (#$ . 48271) nil]) #@58 Update the minor mode string to show state of Supercite. (defalias 'sc-set-mode-string #[nil " \n  ł\nƂ R" [" SC" sc-auto-fill-region-p sc-fixup-whitespace-p ":" "" "f" "w" sc-mode-string] 4 (#$ . 48787)]) #@941 Workhorse citing function which performs the initial citation. This is callable from the various mail and news readers' reply function according to the agreed upon standard. See `\[sc-describe]' for more details. `sc-cite-original' does not do any yanking of the original message but it does require a few things: 1) The reply buffer is the current buffer. 2) The original message has been yanked and inserted into the reply buffer. 3) Verbose mail headers from the original message have been inserted into the reply buffer directly before the text of the original message. 4) Point is at the beginning of the verbose headers. 5) Mark is at the end of the body of text to be cited. For Emacs 19's, the region need not be active (and typically isn't when this function is called. Also, the hook `sc-pre-hook' is run before, and `sc-post-hook' is run after the guts of this function. (defalias 'sc-cite-original #[nil "!\n \n\f\"NƉ# B    !WJ)\"!g!g!g!! \"X\"b!#$#!!) #)̉̉,! " [run-hooks sc-pre-hook sc-mode-map-prefix local-set-key sc-mode-map minor-mode-alist sc-minor-mode put (sc-minor-mode sc-mode-string) t sc-set-mode-string undo-boundary nil zmacs-regions mark-active point-marker point copy-marker mark-marker mark tmp sc-mail-process-headers sc-attribs-chop-address sc-mail-field "from" "reply" "reply-to" "sender" sc-select-attribution count-lines linecnt sc-cite-region-limit sc-cite-region sc-preferred-header-style 0 sc-eref-style sc-electric-references-p sc-electric-mode sc-eref-insert-selected beep message "Region not cited. %d lines exceeds sc-cite-region-limit: %d" sc-post-hook] 5 (#$ . 49028)]) #@123 Like `open-line', but insert the citation prefix at the front of the line. With numeric ARG, inserts that many new lines. (defalias 'sc-open-line #[(arg) "`y !!b!yW6 cyS!+" [0 looking-at sc-cite-regexp sc-submatch "" prefix start open-line arg 1] 4 (#$ . 50866) "p"]) #@151 Insert citation string at beginning of current line if not already cited. With `\[universal-argument]' insert citation even if line is already cited. (defalias 'sc-insert-citation #[(arg) "y !!\f:!c !)" [0 looking-at sc-cite-regexp "^[ ]*$" arg sc-mail-field "sc-citation" error "Line is already cited."] 2 (#$ . 51181) "P"]) #@194 Echo the current version of Supercite in the minibuffer. With \[universal-argument] (universal-argument), or if run non-interactively, inserts the version string in the current buffer instead. (defalias 'sc-version #[(arg) "\n\"\f:t  !)" [format "Using Supercite.el %s" sc-version verstr arg "`sc-version' says: " message] 3 (#$ . 51538) "P"]) #@158 Supercite is a package which provides a flexible mechanism for citing email and news replies. Please see the associated texinfo file for more information. (defalias 'sc-describe #[nil "!" [describe-function sc-describe] 2 (#$ . 51906) nil]) #@44 Submit a bug report on Supercite via mail. (defalias 'sc-submit-bug-report #[nil "!!2 P#" [require reporter y-or-n-p "Do you want to submit a report on Supercite? " reporter-submit-bug-report sc-help-address "Supercite version " sc-version sc-attrib-selection-list sc-auto-fill-region-p sc-blank-lines-after-headers sc-citation-leader sc-citation-delimiter sc-citation-separator sc-citation-leader-regexp sc-citation-root-regexp sc-citation-nonnested-root-regexp sc-citation-delimiter-regexp sc-citation-separator-regexp sc-cite-region-limit sc-confirm-always-p sc-default-attribution sc-default-author-name sc-downcase-p sc-electric-circular-p sc-electric-references-p sc-fixup-whitespace-p sc-mail-warn-if-non-rfc822-p sc-mumble sc-name-filter-alist sc-nested-citation-p sc-nuke-mail-headers sc-nuke-mail-header-list sc-preferred-attribution-list sc-preferred-header-style sc-reference-tag-string sc-rewrite-header-list sc-titlecue-regexp sc-use-only-preference-p] 34 (#$ . 52158) nil]) (byte-code "!!" [provide supercite run-hooks sc-load-hook] 2)