diff options
author | Thien-Thi Nguyen <ttn@gnuvola.org> | 2005-08-06 17:48:15 +0000 |
---|---|---|
committer | Thien-Thi Nguyen <ttn@gnuvola.org> | 2005-08-06 17:48:15 +0000 |
commit | 3731a85096c5e067f05d53573e559d63c8860f15 (patch) | |
tree | 436aa29c4c37acc2e5f32341118215a12d08b470 /lisp/textmodes/reftex-cite.el | |
parent | 38685583801c774f1c17a32f02b29e426bdd0a96 (diff) | |
download | emacs-3731a85096c5e067f05d53573e559d63c8860f15.tar.gz |
Update years in copyright notice; nfc.
Diffstat (limited to 'lisp/textmodes/reftex-cite.el')
-rw-r--r-- | lisp/textmodes/reftex-cite.el | 125 |
1 files changed, 63 insertions, 62 deletions
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el index 6a15665ea21..08ee88e1a74 100644 --- a/lisp/textmodes/reftex-cite.el +++ b/lisp/textmodes/reftex-cite.el @@ -1,6 +1,7 @@ ;;; reftex-cite.el --- creating citations with RefTeX -;; Copyright (c) 1997, 1998, 1999, 2000, 2003, 2004, 2005 -;; Free Software Foundation, Inc. + +;; Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. ;; Author: Carsten Dominik <dominik@science.uva.nl> ;; Version: 4.28 @@ -69,7 +70,7 @@ (unless (eq (get 'reftex-default-bibliography :reftex-raw) reftex-default-bibliography) (put 'reftex-default-bibliography :reftex-expanded - (reftex-locate-bibliography-files + (reftex-locate-bibliography-files default-directory reftex-default-bibliography)) (put 'reftex-default-bibliography :reftex-raw reftex-default-bibliography)) @@ -128,7 +129,7 @@ ;; If RETURN is non-nil, just return the entry. (let* ((re - (if item + (if item (concat "\\\\bibitem\\(\\[[^]]*\\]\\)?{" (regexp-quote key) "}") (concat "@[a-zA-Z]+[ \t\n\r]*[{(][ \t\n\r]*" (regexp-quote key) "[, \t\r\n}]"))) @@ -150,7 +151,7 @@ (when return ;; Just return the relevant entry (if item (goto-char (match-end 0))) - (setq return (buffer-substring + (setq return (buffer-substring (point) (reftex-end-of-bib-entry item))) (set-buffer buffer-conf) (throw 'exit return)) @@ -166,9 +167,9 @@ (error "No BibTeX entry with citation key %s" key))))) (defun reftex-end-of-bib-entry (item) - (save-excursion + (save-excursion (condition-case nil - (if item + (if item (progn (end-of-line) (re-search-forward "\\\\bibitem\\|\\end{thebibliography}") @@ -189,16 +190,16 @@ ;; Read a regexp, completing on known citation keys. (setq default (regexp-quote (reftex-get-bibkey-default))) - (setq re-list - (split-string - (completing-read + (setq re-list + (split-string + (completing-read (concat "Regex { && Regex...}: " "[" default "]: ") (if reftex-mode (if (fboundp 'LaTeX-bibitem-list) (LaTeX-bibitem-list) - (cdr (assoc 'bibview-cache + (cdr (assoc 'bibview-cache (symbol-value reftex-docstruct-symbol)))) nil) nil nil nil 'reftex-cite-regexp-hist) @@ -245,7 +246,7 @@ (error (goto-char key-point) (throw 'search-again nil))) (setq end-point (point)) - + ;; Ignore @string, @comment and @c entries or things ;; outside entries (when (or (string= (downcase (match-string 2)) "string") @@ -254,12 +255,12 @@ (< (point) key-point)) ; this means match not in {} (goto-char key-point) (throw 'search-again nil)) - + ;; Well, we have got a match ;;(setq entry (concat ;; (buffer-substring start-point (point)) "\n")) (setq entry (buffer-substring start-point (point))) - + ;; Check if other regexp match as well (setq re-list rest-re) (while re-list @@ -267,24 +268,24 @@ ;; nope - move on (throw 'search-again nil)) (pop re-list)) - + (setq alist (reftex-parse-bibtex-entry nil start-point end-point)) (push (cons "&entry" entry) alist) - + ;; check for crossref entries (if (assoc "crossref" alist) (setq alist (append alist (reftex-get-crossref-alist alist)))) - + ;; format the entry (push (cons "&formatted" (reftex-format-bib-entry alist)) alist) - + ;; make key the first element (push (reftex-get-bib-field "&key" alist) alist) - + ;; add it to the list (push alist found-list))))) (reftex-kill-temporary-buffers)))) @@ -347,7 +348,7 @@ (unless files (error "Need file name to find thebibliography environment")) (while (setq file (pop files)) - (setq buf (reftex-get-file-buffer-force + (setq buf (reftex-get-file-buffer-force file (not reftex-keep-temporary-buffers))) (unless buf (error "No such file %s" file)) @@ -358,21 +359,21 @@ (save-restriction (widen) (goto-char (point-min)) - (while (re-search-forward + (while (re-search-forward "\\(\\`\\|[\n\r]\\)[ \t]*\\\\begin{thebibliography}" nil t) (beginning-of-line 2) (setq start (point)) - (if (re-search-forward + (if (re-search-forward "\\(\\`\\|[\n\r]\\)[ \t]*\\\\end{thebibliography}" nil t) (progn (beginning-of-line 1) (setq end (point)))) (when (and start end) - (setq entries + (setq entries (append entries (mapcar 'reftex-parse-bibitem (delete "" - (split-string + (split-string (buffer-substring-no-properties start end) "[ \t\n\r]*\\\\bibitem\\(\\[[^]]*]\\)*")))))) (goto-char end))))) @@ -381,16 +382,16 @@ ;; Read a regexp, completing on known citation keys. (setq default (regexp-quote (reftex-get-bibkey-default))) - (setq re-list - (split-string - (completing-read + (setq re-list + (split-string + (completing-read (concat "Regex { && Regex...}: " "[" default "]: ") (if reftex-mode (if (fboundp 'LaTeX-bibitem-list) (LaTeX-bibitem-list) - (cdr (assoc 'bibview-cache + (cdr (assoc 'bibview-cache (symbol-value reftex-docstruct-symbol)))) nil) nil nil nil 'reftex-cite-regexp-hist) @@ -403,14 +404,14 @@ (error "Empty regular expression")) (while (and (setq re (pop re-list)) entries) - (setq entries + (setq entries (delq nil (mapcar (lambda (x) (if (string-match re (cdr (assoc "&entry" x))) x nil)) entries)))) - (setq entries - (mapcar + (setq entries + (mapcar (lambda (x) (push (cons "&formatted" (reftex-format-bibitem x)) x) (push (reftex-get-bib-field "&key" x) x) @@ -654,9 +655,9 @@ While entering the regexp, completion on knows citation keys is possible. ;; FIXME: Unfortunately, this meens that commenting does not work right. (pop selected-entries) (let ((concat-keys (mapconcat 'car selected-entries ","))) - (setq insert-entries + (setq insert-entries (list (list concat-keys (cons "&key" concat-keys)))))) - + (unless no-insert ;; We shall insert this into the buffer... @@ -683,7 +684,7 @@ While entering the regexp, completion on knows citation keys is possible. ;; it has to go. If there is only a single arg and empty, it can go ;; as well. (when reftex-cite-cleanup-optional-args - (cond + (cond ((string-match "\\([a-zA-Z0-9]\\)\\[\\]{" string) (setq string (replace-match "\\1{" nil nil string))) ((string-match "\\[\\]\\(\\[[a-zA-Z0-9., ]+\\]\\)" string) @@ -698,14 +699,14 @@ While entering the regexp, completion on knows citation keys is possible. (delete-char 1)) ;; Tell AUCTeX - (when (and reftex-mode + (when (and reftex-mode (fboundp 'LaTeX-add-bibitems) reftex-plug-into-AUCTeX) (apply 'LaTeX-add-bibitems (mapcar 'car selected-entries))) - + ;; Produce the cite-view strings (when (and reftex-mode reftex-cache-cite-echo cite-view) - (mapcar (lambda (entry) + (mapcar (lambda (entry) (reftex-make-cite-echo-string entry docstruct-symbol)) selected-entries)) @@ -713,16 +714,16 @@ While entering the regexp, completion on knows citation keys is possible. (set-marker reftex-select-return-marker nil) (reftex-kill-buffer "*RefTeX Select*") - + ;; Check if the prefix arg was numeric, and call recursively (when (integerp arg) (if (> arg 1) - (progn + (progn (skip-chars-backward "}") (decf arg) (reftex-do-citation arg)) (forward-char 1))) - + ;; Return the citation key (car (car selected-entries)))) @@ -736,7 +737,7 @@ While entering the regexp, completion on knows citation keys is possible. (no-insert ;; Format does not really matter because nothing will be inserted. (setq format "%l")) - + ((and (stringp macro) (string-match "\\`\\\\cite\\|cite\\'" macro)) ;; We are already inside a cite macro @@ -757,7 +758,7 @@ While entering the regexp, completion on knows citation keys is possible. (when (listp format) (setq key (or format-key - (reftex-select-with-char + (reftex-select-with-char "" (concat "SELECT A CITATION FORMAT\n\n" (mapconcat (lambda (x) @@ -786,8 +787,8 @@ While entering the regexp, completion on knows citation keys is possible. (let ((bibtype (reftex-bib-or-thebib)) found-list rtn key data selected-entries) - (while - (not + (while + (not (catch 'done ;; Scan bibtex files (setq found-list @@ -802,20 +803,20 @@ While entering the regexp, completion on knows citation keys is possible. (reftex-extract-bib-entries-from-thebibliography (reftex-uniquify (mapcar 'cdr - (reftex-all-assq + (reftex-all-assq 'thebib (symbol-value reftex-docstruct-symbol)))))) (reftex-default-bibliography (message "Using default bibliography") (reftex-extract-bib-entries (reftex-default-bibliography))) (t (error "No valid bibliography in this document, and no default available")))) - + (unless found-list (error "Sorry, no matches found")) - + ;; Remember where we came from (setq reftex-call-back-to-this-buffer (current-buffer)) (set-marker reftex-select-return-marker (point)) - + ;; Offer selection (save-window-excursion (delete-other-windows) @@ -856,15 +857,15 @@ While entering the regexp, completion on knows citation keys is possible. (goto-char 1)) ((eq key ?A) ;; Take all (marked) - (setq selected-entries + (setq selected-entries (if reftex-select-marked (mapcar 'car (nreverse reftex-select-marked)) found-list)) (throw 'done t)) ((eq key ?a) ;; Take all (marked), and push the symbol 'concat - (setq selected-entries - (cons 'concat + (setq selected-entries + (cons 'concat (if reftex-select-marked (mapcar 'car (nreverse reftex-select-marked)) found-list))) @@ -883,9 +884,9 @@ While entering the regexp, completion on knows citation keys is possible. ((or (eq key ?\C-m) (eq key 'return)) ;; Take selected - (setq selected-entries + (setq selected-entries (if reftex-select-marked - (cons 'concat + (cons 'concat (mapcar 'car (nreverse reftex-select-marked))) (if data (list data) nil))) (throw 'done t)) @@ -925,7 +926,7 @@ While entering the regexp, completion on knows citation keys is possible. (let ((file (read-file-name "File to create: "))) (find-file-other-window file) (if (> (buffer-size) 0) - (unless (yes-or-no-p + (unless (yes-or-no-p (format "Overwrite non-empty file %s? " file)) (error "Abort"))) (erase-buffer) @@ -950,7 +951,7 @@ While entering the regexp, completion on knows citation keys is possible. reftex-mouse-selected-face nil)) tmp len) - (mapcar + (mapcar (lambda (x) (setq tmp (cdr (assoc "&formatted" x)) len (length tmp)) @@ -1045,7 +1046,7 @@ While entering the regexp, completion on knows citation keys is possible. (defun reftex-make-cite-echo-string (entry docstruct-symbol) ;; Format a bibtex entry for the echo area and cache the result. (let* ((key (reftex-get-bib-field "&key" entry)) - (string + (string (let* ((reftex-cite-punctuation '(" " " & " " etal."))) (reftex-format-citation entry reftex-cite-view-format))) (cache (assq 'bibview-cache (symbol-value docstruct-symbol))) @@ -1087,7 +1088,7 @@ While entering the regexp, completion on knows citation keys is possible. (setq bibfile-list (reftex-uniquify (mapcar 'cdr - (reftex-all-assq + (reftex-all-assq 'thebib (symbol-value reftex-docstruct-symbol)))) item t)) (reftex-default-bibliography @@ -1098,10 +1099,10 @@ While entering the regexp, completion on knows citation keys is possible. (setq bibfile-list (reftex-visited-files bibfile-list))) (condition-case nil - (reftex-pop-to-bibtex-entry + (reftex-pop-to-bibtex-entry key bibfile-list (not reftex-keep-temporary-buffers) t item) (error (ding)))) - + (select-window win))) ;;; Global BibTeX file @@ -1130,7 +1131,7 @@ While entering the regexp, completion on knows citation keys is possible. "Create a new BibTeX database file with all entries referenced in document. The command prompts for a filename and writes the collected entries to that file. Only entries referenced in the current document with -any \\cite-like macros are used. +any \\cite-like macros are used. The sequence in the new file is the same as it was in the old database." (interactive "FNew BibTeX file: ") (let ((keys (reftex-all-used-citation-keys)) @@ -1144,7 +1145,7 @@ The sequence in the new file is the same as it was in the old database." (save-restriction (widen) (goto-char (point-min)) - (while (re-search-forward + (while (re-search-forward "^[ \t]*@[a-zA-Z]+[ \t]*{\\([^ \t\r\n]+\\)," nil t) (setq key (match-string 1) @@ -1161,7 +1162,7 @@ The sequence in the new file is the same as it was in the old database." keys (delete key keys))))))))) (find-file-other-window bibfile) (if (> (buffer-size) 0) - (unless (yes-or-no-p + (unless (yes-or-no-p (format "Overwrite non-empty file %s? " bibfile)) (error "Abort"))) (erase-buffer) |