;ELC ;;; compiled by rms@mole.gnu.ai.mit.edu on Sun Sep 11 21:06:56 1994 ;;; from file /home/fsf/rms/e19/lisp/bibtex.el ;;; emacs version 19.26.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 "`/home/fsf/rms/e19/lisp/bibtex.el' was compiled for Emacs 19")) (byte-code "!!\"!\"" [provide bibtex fboundp tex-insert-quote autoload "tex-mode" sort-subr "sort"] 3) (defalias 'string-equalp #[(s1 s2) "9 !\f\n9\n!\nG GU'\f *" [s1 symbol-name s2 ss2 ss1] 4 "\ Like string= except differences in case are ignored."]) (defvar bibtex-clean-entry-zap-empty-opts t "\ *If non-nil, bibtex-clean-entry will delete all empty optional fields.") (defvar bibtex-include-OPTcrossref t "\ *If non-nil, all entries will have an OPTcrossref field.") (defvar bibtex-include-OPTkey t "\ *If non-nil, all entries will have an OPTkey field.") (defvar bibtex-include-OPTannote t "\ *If non-nil, all entries will have an OPTannote field.") (defvar bibtex-mode-user-optional-fields nil "\ *List of optional fields that user want to have as always present when making a bibtex entry. One possibility is for ``keywords''. Entries can be either strings or conses, in which case the car should be string and the cdr the value to be inserted.") (byte-code "!B  # # # # # # # # # )" [boundp bibtex-mode-syntax-table make-syntax-table st modify-syntax-entry 34 "\"" 36 "$$ " 37 "< " 39 "w " 64 92 "\\" 12 "> " 10 126 " "] 4) (defvar bibtex-mode-abbrev-table nil "\ ") (byte-code "\"! ############################@#AB#)‡" [define-abbrev-table bibtex-mode-abbrev-table nil boundp bibtex-mode-map make-sparse-keymap km define-key " " bibtex-find-text "\n" bibtex-next-field "\"" bibtex-remove-double-quotes "" bibtex-clean-entry "?" describe-mode "" bibtex-pop-previous "" bibtex-pop-next " " bibtex-kill-optional-field "" bibtex-empty-field "\"" tex-insert-quote "$" ispell-bibtex-entry "" beginning-of-bibtex-entry "" end-of-bibtex-entry "" bibtex-entry "" bibtex-Article "" bibtex-Book "" bibtex-InProceedings " " bibtex-InBook "i" bibtex-InCollection "I" " " bibtex-Manual "m" bibtex-MastersThesis "M" bibtex-Misc "" bibtex-remove-OPT "" bibtex-PhdThesis "p" bibtex-Proceedings "P" bibtex-preamble "" bibtex-TechReport "" bibtex-string "" bibtex-Unpublished] 4) (defvar bibtex-pop-previous-search-point nil "\ Next point where bibtex-pop-previous should start looking for a similar entry.") (defvar bibtex-pop-next-search-point nil "\ Next point where bibtex-pop-next should start looking for a similar entry.") (defvar bibtex-entry-field-alist (quote (("Article" (("author" "title" "journal" "year") ("volume" "number" "pages" "month" "note")) (("author" "title") ("journal" "year" "volume" "number" "pages" "month" "note"))) ("Book" (("author" "title" "publisher" "year") ("editor" "volume" "number" "series" "address" "edition" "month" "note"))) ("Booklet" (("title") ("author" "howpublished" "address" "month" "year" "note"))) ("InBook" (("author" "title" "chapter" "publisher" "year") ("editor" "pages" "volume" "number" "series" "address" "edition" "month" "type" "note")) (("author" "title" "chapter") ("publisher" "year" "editor" "pages" "volume" "number" "series" "address" "edition" "month" "type" "note"))) ("InCollection" (("author" "title" "booktitle" "publisher" "year") ("editor" "volume" "number" "series" "type" "chapter" "pages" "address" "edition" "month" "note")) (("author" "title") ("booktitle" "publisher" "year" "editor" "volume" "number" "series" "type" "chapter" "pages" "address" "edition" "month" "note"))) ("InProceedings" (("author" "title" "booktitle" "year") ("editor" "volume" "number" "series" "pages" "organization" "publisher" "address" "month" "note")) (("author" "title") ("editor" "volume" "number" "series" "pages" "booktitle" "year" "organization" "publisher" "address" "month" "note"))) ("Manual" (("title") ("author" "organization" "address" "edition" "year" "month" "note"))) ("MastersThesis" (("author" "title" "school" "year") ("address" "month" "note" "type"))) ("Misc" (nil ("author" "title" "howpublished" "year" "month" "note"))) ("PhdThesis" (("author" "title" "school" "year") ("address" "month" "type" "note"))) ("Proceedings" (("title" "year") ("editor" "volume" "number" "series" "publisher" "organization" "address" "month" "note"))) ("TechReport" (("author" "title" "institution" "year") ("type" "number" "address" "month" "note"))) ("Unpublished" (("author" "title" "note") ("year" "month"))))) "\ List of (entry-name (required optional) (crossref-required crossref-optional)) tripples. If the third element is nil, then the first pair can be used. Required and optional are lists of strings. All entry creation functions use this variable to generate entries, and bibtex-entry ensures the entry type is valid. This variable can be used for example to make bibtex manipulate a different set of entry types, e.g. a crossreference document of organization types.") (defalias 'bibtex-cfield #[(name text) " İ" [",[ \n]*\\(" name "\\)[ \n]*=[ \n]*\\(" text "\\)"] 5 "\ Create a regexp for a bibtex field of name NAME and text TEXT"]) (defconst bibtex-name-in-cfield 1 "\ The regexp subexpression number of the name part in bibtex-cfield.") (defconst bibtex-text-in-cfield 2 "\ The regexp subexpression number of the text part in bibtex-cfield.") (defconst bibtex-field-name "[A-Za-z][]A-Za-z0-9.:;?!`'()/*@_+=-]*" "\ Regexp defining the name part of a bibtex field.") (defconst bibtex-field-const "[0-9A-Za-z][A-Za-z0-9:_+-]*" "\ Format of a bibtex field constant.") (defconst bibtex-field-string (concat "\"[^\"]*[^\\\\]\"\\|\"\"") "\ Match either a string or an empty string.") (defconst bibtex-field-string-or-const (concat bibtex-field-const "\\|" bibtex-field-string) "\ Match either bibtex-field-string or bibtex-field-const.") (defconst bibtex-field-text (concat "\\(" bibtex-field-string-or-const "\\)" "\\([ \n]+#[ \n]+\\(" bibtex-field-string-or-const "\\)\\)*\\|" "{[^{}]*[^\\\\]}") "\ Regexp defining the text part of a bibtex field: either a string, or an empty string, or a constant followed by one or more # / constant pairs. Also matches simple {...} patterns.") (defconst bibtex-field (bibtex-cfield bibtex-field-name bibtex-field-text) "\ Regexp defining the format of a bibtex field") (defconst bibtex-name-in-field bibtex-name-in-cfield "\ The regexp subexpression number of the name part in bibtex-field") (defconst bibtex-text-in-field bibtex-text-in-cfield "\ The regexp subexpression number of the text part in bibtex-field") (defconst bibtex-reference-type "@[A-Za-z]+" "\ Regexp defining the type part of a bibtex reference entry") (defconst bibtex-reference-head (concat "^[ ]*\\(" bibtex-reference-type "\\)[ ]*[({]\\(" bibtex-field-name "\\)") "\ Regexp defining format of the header line of a bibtex reference entry") (defconst bibtex-type-in-head 1 "\ The regexp subexpression number of the type part in bibtex-reference-head") (defconst bibtex-key-in-head 2 "\ The regexp subexpression number of the key part in bibtex-reference-head") (defconst bibtex-reference (concat "^[ ]*" bibtex-reference-type "[ ]*[({]\\(" bibtex-field-name "\\)" "\\([ \n]*" bibtex-field "\\)*" "[ \n]*[})]") "\ Regexp defining the format of a bibtex reference entry") (defconst bibtex-type-in-reference bibtex-type-in-head "\ The regexp subexpression number of the type part in bibtex-reference") (defconst bibtex-key-in-reference bibtex-key-in-head "\ The regexp subexpression number of the key part in bibtex-reference") (defconst bibtex-string (concat "^[ ]*@[sS][tT][rR][iI][nN][gG][ \n]*[({][ \n]*\\(" bibtex-field-name "\\)[ \n]*=[ \n]*\\(" bibtex-field-text "\\)[ \n]*[})]") "\ Regexp defining the format of a bibtex string entry") (defconst bibtex-name-in-string 1 "\ The regexp subexpression of the name part in bibtex-string") (defconst bibtex-text-in-string 2 "\ The regexp subexpression of the text part in bibtex-string") (defconst bibtex-name-alignment 2 "\ Alignment for the name part in BibTeX fields. Chosen on aesthetic grounds only.") (defconst bibtex-text-alignment (length " organization = ") "\ Alignment for the text part in BibTeX fields. Equal to the space needed for the longest name part.") (defalias 'bibtex-current-entry-label #[(&optional include-cite kill) " \n `)\"\f\f{ \"!  \n- ! +" [beginning-of-bibtex-entry re-search-forward bibtex-reference-head end-of-bibtex-entry bibtex-key-in-head key include-cite format "\\cite{%s}" val kill kill-new] 3 "\ Return the label of the bibtex entry containing, or preceding point. Optional argument INCLUDE-CITE, if true means put a '\\cite{}' around the returned value. Second optional argument KILL, if true, means place the returned value in the kill buffer. Interactively; providing prefix argument makes INCLUDE-CITE true, and kill is true by default. Rationale: The intention is that someone will write a function that can be bound to a mouse key so that people entering TeX can just mouse on the bibtex entry and have the citation key inserted at the current point (which will almost certainly be in some other buffer). In the interim this function is marginally useful for keyboard binding and is not bound by default. Suggested binding is ^C-k." (list current-prefix-arg t)]) (defalias 'bibtex-mode #[nil " \n!\f!\n! \n!! \f!\\!" [kill-all-local-variables set-syntax-table bibtex-mode-syntax-table use-local-map bibtex-mode-map bibtex-mode major-mode "BibTeX" mode-name bibtex-mode-abbrev-table local-abbrev-table make-local-variable paragraph-start comment-start "%" "^[ \f\n ]*$" auto-fill-mode 1 bibtex-text-alignment left-margin run-hooks bibtex-mode-hook] 2 "\ Major mode for editing bibtex files. \\{bibtex-mode-map} A command such as \\[bibtex-Book] will outline the fields for a BibTeX book entry. The optional fields start with the string OPT, and thus ignored by BibTeX. The OPT string may be removed from a field with \\[bibtex-remove-OPT]. \\[bibtex-kill-optional-field] kills the current optional field entirely. \\[bibtex-remove-double-quotes] removes the double-quotes around the text of the current field. \\[bibtex-empty-field] replaces the text of the current field with the default \"\". The command \\[bibtex-clean-entry] cleans the current entry, i.e. (i) removes double-quotes from entirely numerical fields, (ii) removes OPT from all non-empty optional fields, (iii) removes all empty optional fields, and (iv) checks that no non-optional fields are empty. Use \\[bibtex-find-text] to position the dot at the end of the current field. Use \\[bibtex-next-field] to move to end of the next field. The following may be of interest as well: Functions: find-bibtex-duplicates find-bibtex-entry-location hide-bibtex-entry-bodies sort-bibtex-entries validate-bibtex-buffer Variables: bibtex-clean-entry-zap-empty-opts bibtex-entry-field-alist bibtex-include-OPTannote bibtex-include-OPTcrossref bibtex-include-OPTkey bibtex-maintain-sorted-entries bibtex-mode-user-optional-fields Fields: address Publisher's address annote Long annotation used for annotated bibliographies (begins sentence) author Name(s) of author(s), in BibTeX name format booktitle Book title when the thing being referenced isn't the whole book. For book entries, the title field should be used instead. chapter Chapter number crossref The database key of the entry being cross referenced. edition Edition of a book (e.g., \"second\") editor Name(s) of editor(s), in BibTeX name format. If there is also an author field, then the editor field should be for the book or collection that the work appears in howpublished How something strange has been published (begins sentence) institution Sponsoring institution journal Journal name (macros are provided for many) key Alphabetizing and labeling key (needed when no author or editor) month Month (macros are provided) note To help the reader find a reference (begins sentence) number Number of a journal or technical report organization Organization (sponsoring a conference) pages Page number or numbers (use `--' to separate a range) publisher Publisher name school School name (for theses) series The name of a series or set of books. An individual book will will also have it's own title title The title of the thing being referenced type Type of a technical report (e.g., \"Research Note\") to be used instead of the default \"Technical Report\" volume Volume of a journal or multivolume work year Year---should contain only numerals --------------------------------------------------------- Entry to this mode calls the value of bibtex-mode-hook if that value is non-nil." nil]) (defalias 'bibtex-move-outside-of-entry #[nil "`dU`eU! d#" [looking-at "[ \n]*@" backward-paragraph forward-paragraph re-search-forward "[ \n]*" t] 4 "\ Make sure we are outside of a bib entry"]) (byte-code "\"\"\"" [defalias ispell-abstract #[nil " !` `)\"" [beginning-of-bibtex-entry re-search-forward "^[ ]*[OPT]*abstract[ ]*=" ispell-region forward-sexp] 3 nil nil] beginning-of-bibtex-entry #[nil "#" [re-search-backward "^@" nil move] 4 nil nil] skip-whitespace-and-comments #[nil " Ž!ŕb! ! *" [match-data md ((store-match-data md)) looking-at "\\s>+\\|\\s +" 0 "\\s<" re-search-forward "\\s>"] 2]] 3) (defalias 'end-of-bibtex-entry #[nil "   )" [skip-whitespace-and-comments nil beginning-of-bibtex-entry t parse-sexp-ignore-comments forward-sexp] 1 "\ If inside an entry, move to the end of it, otherwise move to the end of the next entry." nil]) (byte-code "\"\"\"" [defalias ispell-bibtex-entry #[nil " ` `\"" [ispell-region beginning-of-bibtex-entry end-of-bibtex-entry] 3 nil nil] narrow-to-bibtex-entry #[nil " ` `})" [beginning-of-bibtex-entry end-of-bibtex-entry] 2 nil nil] beginning-of-first-bibtex-entry #[nil "eb#y‡om‡!" [re-search-forward "^@" nil move 0 message "Warning: No bibtex entries found!"] 4]] 3) (defalias 'hide-bibtex-entry-bodies #[(&optional arg) "  `d%8d#)8#4‰##) ?\f!+" [beginning-of-first-bibtex-entry buffer-modified-p nil buffer-read-only modifiedp arg subst-char-in-region 13 10 t re-search-forward "\n[^@]" "\n\\([^@]\\)" replace-match " \\1" selective-display set-buffer-modified-p] 6 "\ Hide all lines between first and last bibtex entries not beginning with @. With argument, show all text." "P"]) (defvar bibtex-sort-ignore-string-entries nil "\ *If true, bibtex @STRING entries are ignored when determining ordering of the buffer (e.g. sorting, locating alphabetical position for new entries, etc.)") (defalias 'sort-bibtex-entries #[nil " `db `)} Ȃ!%)" [beginning-of-first-bibtex-entry beginning-of-bibtex-entry end-of-bibtex-entry sort-subr nil forward-line #[nil "#\nu" [re-search-forward "}\\s-*\n[\n ]*@" nil move -2] 4] bibtex-sort-ignore-string-entries #[nil "!Ĕĕ{\"Ň" [re-search-forward "^\\s-*\\([@a-zA-Z]*\\)\\s-*{\\s-*" string-equalp "@string" 1 nil] 4] #[nil "!‡" [re-search-forward "{\\s-*" nil] 2] #[nil "!" [search-forward ","] 2]] 6 "\ Sort bibtex entries alphabetically by key. Text before the first bibtex entry, and following the last is not affected. If bibtex-sort-ignore-string-entries is true, @string entries will be ignored. Bugs: 1. Text between the closing brace ending one bibtex entry, and the @ starting the next, is considered part of the PRECEDING entry. Perhaps it should be part of the following entry." nil]) (defalias 'map-bibtex-entries #[(fun) " #& Ȕɔ{\"\nɔɕ{!" [beginning-of-bibtex-entry re-search-forward "^@[^{]*{[ ]*\\([^, ]*\\)" nil t bibtex-sort-ignore-string-entries string-equalp "@string{" 0 1 fun] 4 "\ Call FUN for each bibtex entry starting with the current, to the end of the file. FUN is called with one argument, the key of the entry, and with point inside the entry. If bibtex-sort-ignore-string-entries is true, FUN will not be called for @string entries."]) (defalias 'find-bibtex-entry-location #[(entry-name) " ō *" [nil point previous beginning-of-first-bibtex-entry done (map-bibtex-entries #[(current) " \n!\f\f E ` R ! \" ? U? #!)\"\f O!!" [entry-name current error "Entry duplicates existing!" previous point beginning-of-bibtex-entry string-match regexp-quote idx 0 message "Warning: Entry %s may be a duplicate of %s!" ding t throw done "Duplicate here with previous!" "Entries out of order here!"] 5]) end-of-bibtex-entry] 2 "\ Searches from beginning of current buffer looking for place to put the bibtex entry named ENTRY-NAME. Buffer is assumed to be in sorted order, without duplicates (see \\[sort-bibtex-entries]), if it is not, an error will be signalled." "sBibtex entry key: "]) (defalias 'validate-bibtex-buffer #[nil "`#'Ŋ `)`\"8 #!*b#\\!*h\"*!*`y`}!**!*b#n!_b!)" [point re-search-forward ".@" nil t parse-partial-sexp beginning-of-bibtex-entry foo 3 in-a-string error "At sign (@) out of place!" search-forward "\"" looking-at "[,}][ ]*$" char-equal 34 "[ ]*\n}" 0 "^[ ]*[a-zA-Z]+[ ]*=[ ]*\"$" "Quote out of place, or missing \",\" or \"}\"!" "}[ ]+$" "Brace not last char of line!" message "Bibtex buffer appears o.k."] 5 "\ Find some typical errors in bibtex files. 1. At signs (@) not as first char of a line. 2. Double quotes (\") inside strings. 3. Closing braces (}) not the last character of a line." nil]) (defalias 'find-bibtex-duplicates #[nil "`\"!b!)" [point find-bibtex-entry-location make-string 10 255 message "No duplicates found!"] 4 "\ Searches forward in current buffer looking for duplicate bibtex entries. Buffer is assumed to be sorted, see \\[sort-bibtex-entries]" nil]) (defalias (quote assoc-string-equalp) #[(thing alist) " \n\"\n \n@@\"\nA \n@" [assoc thing alist string-equalp] 4]) (defvar bibtex-maintain-sorted-entries nil "\ *If true, bibtex-mode will attempt to maintain all bibtex entries in sorted order. Note that this is more a property of a file than a personal preference and as such should normally be set via a file local variable entry.") (byte-code "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"" [defalias bibtex-entry #[(entry-type &optional required optional) "A A \f\"Ɯ Ȝ !\f6 6 ͜ Ɯ@͜Ɯ+L \"!W! ֱic\"\fx!! \"\"!c)!!)" [required optional assoc-string-equalp entry-type bibtex-entry-field-alist e 1 r-n-o 2 c-ref error "Bibtex entry type %s not defined!" bibtex-include-OPTcrossref 0 bibtex-maintain-sorted-entries read-string format "%s key: " key find-bibtex-entry-location bibtex-move-outside-of-entry "@" "{" mapcar bibtex-make-field bibtex-make-optional-field "crossref" bibtex-include-OPTkey "key" bibtex-mode-user-optional-fields bibtex-include-OPTannote "annote" "\n}\n\n" bibtex-next-field t run-hooks bibtex-add-entry-hook] 5 nil (byte-code "\f$)C" [t completion-ignore-case completing-read "Entry Type: " bibtex-entry-field-alist nil] 6)] bibtex-make-field #[(e-t) ":\n@ :Ac j Ʊj\n;1ɂ2\n\"c*ˇ" [e-t "" value name ",\n" bibtex-name-alignment " = " bibtex-text-alignment format "\"%s\"" "%s" nil] 3 nil "sBibTeX entry type: "] bibtex-make-optional-field #[(e-t) ":@PABP!" [e-t "OPT" bibtex-make-field] 2 nil "sOptional BibTeX entry type: "] bibtex-Article #[nil "!" [bibtex-entry "Article"] 2 nil nil] bibtex-Book #[nil "!" [bibtex-entry "Book"] 2 nil nil] bibtex-Booklet #[nil "!" [bibtex-entry "Booklet"] 2 nil nil] bibtex-InBook #[nil "!" [bibtex-entry "InBook"] 2 nil nil] bibtex-InCollection #[nil "!" [bibtex-entry "InCollection"] 2 nil nil] bibtex-InProceedings #[nil "!" [bibtex-entry "InProceedings"] 2 nil nil] bibtex-Manual #[nil "!" [bibtex-entry "Manual"] 2 nil nil] bibtex-MastersThesis #[nil "!" [bibtex-entry "MastersThesis"] 2 nil nil] bibtex-Misc #[nil "!" [bibtex-entry "Misc"] 2 nil nil] bibtex-PhdThesis #[nil "!" [bibtex-entry "PhdThesis"] 2 nil nil] bibtex-Proceedings #[nil "!" [bibtex-entry "Proceedings"] 2 nil nil] bibtex-TechReport #[nil "!" [bibtex-entry "TechReport"] 2 nil nil] bibtex-Unpublished #[nil "!" [bibtex-entry "Unpublished"] 2 nil nil] bibtex-string #[nil " c!u" [bibtex-move-outside-of-entry "@string{ = \"\"}\n" previous-line 1 8] 2 nil nil] bibtex-preamble #[nil " c!u" [bibtex-move-outside-of-entry "@Preamble{}\n" previous-line 1 10] 2 nil nil]] 3) (defalias 'bibtex-next-field #[(arg) " `ď)!" [bibtex-inside-field start nil (byte-code " bu" [bibtex-enclosing-field 0 2] 1) ((error (byte-code "bu" [start nil 1] 1))) bibtex-find-text arg] 3 "\ Finds end of text of next BibTeX field; with arg, to its beginning" "P"]) (defalias 'bibtex-find-text #[(arg) " \n b!#u bhU#u" [bibtex-inside-field bibtex-enclosing-field arg bibtex-text-in-field looking-at "\"" 1 34 -1] 2 "\ Go to end of text of current field; with arg, go to beginning." "P"]) (defalias 'bibtex-remove-OPT #[nil " \nb!!G!!  j) " [bibtex-inside-field bibtex-enclosing-field bibtex-name-in-field looking-at "OPT" delete-char search-forward "=" delete-horizontal-space bibtex-text-alignment] 2 "\ Removes the 'OPT' starting optional arguments and goes to end of text" nil]) (defalias 'bibtex-inside-field #[nil "xhUuhUu" [nil " " 44 -2 34 -1] 2 "\ Try to avoid point being at end of a bibtex field." nil]) (defalias 'bibtex-remove-double-quotes #[nil " \n\n bu!!\fb!)!+" [bibtex-inside-field bibtex-enclosing-field bibtex-text-in-field stop start -1 looking-at "\"" delete-char 1] 2 "\ Removes \"\" around string." nil]) (defalias 'bibtex-kill-optional-field #[nil " \nbÕÔ!$ bw\f \"'!*" [bibtex-inside-field bibtex-enclosing-field bibtex-name-in-field 0 the-beginning the-end looking-at "OPT" " \n," nil kill-region error "Mandatory fields can't be killed"] 3 "\ Kill the entire enclosing optional BibTeX field" nil]) (defalias 'bibtex-empty-field #[nil " \nb`\n\"c!" [bibtex-inside-field bibtex-enclosing-field bibtex-text-in-field kill-region "\"\"" bibtex-find-text t] 3 "\ Delete the text part of the current field, replace with empty text" nil]) (defalias 'bibtex-pop-previous #[(arg) " \n\n  b!+`G\\,`{ \"=M=M Ӕӕbe${ӕӔ b | c!.Љ" [bibtex-inside-field bibtex-enclosing-field bibtex-text-in-field bibtex-name-in-field nil new-text stop-name start-name stop-old-text start-old-text bibtex-cfield looking-at "OPT" bibtex-field-text matching-entry last-command bibtex-pop-previous bibtex-pop-next bibtex-enclosing-reference 0 bibtex-pop-previous-search-point bibtex-pop-next-search-point re-search-backward t arg bibtex-text-in-cfield bibtex-flash-head error "No previous matching BibTeX field." this-command] 5 "\ Replace text of current field with the text of similar field in previous entry. With arg, go up ARG entries. Repeated, goes up so many times. May be intermixed with \\[bibtex-pop-next] (bibtex-pop-next)." "p"]) (defalias 'bibtex-pop-next #[(arg) " \n\n  b!+`G\\,`{ \"=M=M Ӕӕbd${ӕӔ b | c!.Љ" [bibtex-inside-field bibtex-enclosing-field bibtex-text-in-field bibtex-name-in-field nil new-text stop-name start-name stop-old-text start-old-text bibtex-cfield looking-at "OPT" bibtex-field-text matching-entry last-command bibtex-pop-next bibtex-pop-previous bibtex-enclosing-reference 0 bibtex-pop-previous-search-point bibtex-pop-next-search-point re-search-forward t arg bibtex-text-in-cfield bibtex-flash-head error "No next matching BibTeX field." this-command] 5 "\ Replace text of current field with the text of similar field in next entry. With arg, go up ARG entries. Repeated, goes up so many times. May be intermixed with \\[bibtex-pop-previous] (bibtex-pop-previous)." "p"]) (defalias 'bibtex-flash-head #[nil " e# b%x`yw`!1!7` {\")" [nil flash re-search-backward bibtex-reference-head t bibtex-type-in-head bibtex-key-in-reference " " 0 pos-visible-in-window-p sit-for 1 message "From: %s"] 4 "\ Flash at BibTeX reference head before point, if exists. (Moves point)."]) (defalias 'bibtex-enclosing-field #[nil "`Ï)" [old-point errname (bibtex-enclosing-regexp bibtex-field) ((search-failed (byte-code "b!" [old-point error "Can't find enclosing BibTeX field."] 2)))] 3 "\ Search for BibTeX field enclosing point. Point moves to end of field; also, use match-beginning and match-end to parse the field."]) (defalias 'bibtex-enclosing-reference #[nil "`Ï)" [old-point errname (bibtex-enclosing-regexp bibtex-reference) ((search-failed (byte-code "b!" [old-point error "Can't find enclosing BibTeX reference."] 2)))] 3 "\ Search for BibTeX reference enclosing point. Point moves to end of reference; also, use match-beginning and match-end to parse the reference."]) (defalias 'bibtex-enclosing-regexp #[(regexp) "`\nd#ĕdb\ne#!Ĕ\"eb\n $ĔV;\nC\"ĕXY\n $ĔV;\nC\";+" [initial re-search-forward regexp t 0 right re-search-backward left nil 1 signal search-failed] 6 "\ Search for REGEXP enclosing point. Point moves to end of REGEXP. See also match-beginning and match-end. If an enclosing REGEXP is not found, signals search-failed; point is left in an undefined location. [Doesn't something like this exist already?]" "sRegexp: "]) (defalias 'bibtex-clean-entry #[nil " ` `)}\fd$ǔǕ  \n \f  b!qq b!V| bG!! jb b!\nb! b!bu!u \\{њ \\{ݚ \f{\"b.) b !!h=!) )" [beginning-of-bibtex-entry start end-of-bibtex-entry re-search-forward bibtex-field t 1 0 bibtex-name-in-field bibtex-text-in-field end-text begin-text end-name begin-name end-field begin-field looking-at "OPT" bibtex-clean-entry-zap-empty-opts "\"\"" delete-char search-forward "=" delete-horizontal-space bibtex-text-alignment "\"[0-9]+\"" -1 -2 3 "opt" error "Mandatory field ``%s'' is empty" backward-char skip-syntax-backward " >" 44 backward-delete-char skip-whitespace-and-comments] 6 "\ For all optional fields of current BibTeX entry: if empty, kill the whole field; otherwise, remove the \"OPT\" string in the name; if text numerical, remove double-quotes. For all mandatory fields: if empty, signal error." nil]) (byte-code " !B# # # # # # # # # # # # # # # # # !B# # # # # # # # # # #" [define-key bibtex-mode-map [menu-bar entry-types] "Entry Types" make-sparse-keymap [menu-bar entry-types bibtex-InProceedings] (" article in conference Proceedings " . bibtex-InProceedings) [menu-bar entry-types bibtex-Article] (" Article in journal " . bibtex-Article) [menu-bar entry-types bibtex-Book] (" Book " . bibtex-Book) [menu-bar entry-types bibtex-Booklet] (" Booklet " . bibtex-Booklet) [menu-bar entry-types bibtex-InProceedings] (" Conference " . bibtex-InProceedings) [menu-bar entry-types bibtex-MastersThesis] (" Master's Thesis " . bibtex-MastersThesis) [menu-bar entry-types bibtex-PhdThesis] (" Phd. Thesis " . bibtex-PhdThesis) [menu-bar entry-types bibtex-TechReport] (" Technical Report " . bibtex-TechReport) [menu-bar entry-types bibtex-Manual] (" technical Manual " . bibtex-Manual) [menu-bar entry-types bibtex-Proceedings] (" conference Proceedings " . bibtex-Proceedings) [menu-bar entry-types bibtex-InBook] (" a chapter in a Book " . bibtex-InBook) [menu-bar entry-types bibtex-InCollection] (" an article in a Collection " . bibtex-InCollection) [menu-bar entry-types bibtex-Misc] (" miscellaneous " . bibtex-Misc) [menu-bar entry-types bibtex-Unpublished] (" unpublished " . bibtex-Unpublished) [menu-bar entry-types bibtex-string] (" string " . bibtex-string) [menu-bar entry-types bibtex-preamble] (" preamble " . bibtex-preamble) [menu-bar move/edit] "Bibtex Edit" [menu-bar move/edit bibtex-next-field] (" next field " . bibtex-next-field) [menu-bar move/edit bibtex-find-text] (" to end of field " . bibtex-find-text) [menu-bar move/edit bibtex-pop-previous] ("snatch from similar preceding field" . bibtex-pop-previous) [menu-bar move/edit bibtex-pop-next] ("snatch from similar following field" . bibtex-pop-next) [menu-bar move/edit bibtex-remove-OPT] (" remove OPT " . bibtex-remove-OPT) [menu-bar move/edit bibtex-remove-double-quotes] (" remove quotes " . bibtex-remove-double-quotes) [menu-bar move/edit bibtex-clean-entry] (" clean up entry " . bibtex-clean-entry) [menu-bar move/edit find-bibtex-duplicates] (" find duplicates " . find-bibtex-duplicates) [menu-bar move/edit sort-bibtex-entries] (" sort entries " . sort-bibtex-entries) [menu-bar move/edit validate-bibtex-buffer] (" validate entries " . validate-bibtex-buffer)] 6)