lisp/textmodes/bibtex.el: various small bug fixes

This commit is contained in:
Roland Winkler 2011-06-04 23:58:39 -05:00
commit 004dedd364
2 changed files with 38 additions and 25 deletions
lisp

View file

@ -1,3 +1,12 @@
2011-06-05 Roland Winkler <winkler@gnu.org>
* textmodes/bibtex.el (bibtex-generate-url-list): Fix docstring.
(bibtex-insert-kill): After yanking insert newline if necessary.
(bibtex-initialize): Call bibtex-string-files-init only once.
(bibtex-mode): Do not call easy-menu-add.
(bibtex-validate-globally): Use save-excursion in bibtex buffers.
(bibtex-yank): Set arg properly if nil.
2011-06-05 Roland Winkler <winkler@gnu.org> 2011-06-05 Roland Winkler <winkler@gnu.org>
* textmodes/bibtex.el (bibtex-search-entry-globally): New * textmodes/bibtex.el (bibtex-search-entry-globally): New

View file

@ -923,7 +923,7 @@ The following is a complex example, see URL `http://link.aps.org/'.
(((\"journal\" . \"\\\\=<\\(PR[ABCDEL]?\\|RMP\\)\\\\=>\") (((\"journal\" . \"\\\\=<\\(PR[ABCDEL]?\\|RMP\\)\\\\=>\")
\"http://link.aps.org/abstract/%s/v%s/p%s\" \"http://link.aps.org/abstract/%s/v%s/p%s\"
(\"journal\" \".*\" downcase) (\"journal\" \".*\" upcase)
(\"volume\" \".*\" 0) (\"volume\" \".*\" 0)
(\"pages\" \"\\`[A-Z]?[0-9]+\" 0)))" (\"pages\" \"\\`[A-Z]?[0-9]+\" 0)))"
:group 'bibtex :group 'bibtex
@ -1892,6 +1892,9 @@ Optional arg COMMA is as in `bibtex-enclosing-field'."
(push-mark) (push-mark)
(insert (funcall fun 'bibtex-entry-kill-ring-yank-pointer (insert (funcall fun 'bibtex-entry-kill-ring-yank-pointer
bibtex-entry-kill-ring)) bibtex-entry-kill-ring))
;; If we copied an entry from a buffer containing only this one entry,
;; it can be missing the second "\n".
(unless (looking-back "\n\n") (insert "\n"))
(unless (functionp bibtex-reference-keys) (unless (functionp bibtex-reference-keys)
;; update `bibtex-reference-keys' ;; update `bibtex-reference-keys'
(save-excursion (save-excursion
@ -2723,12 +2726,14 @@ When called interactively, FORCE is t, CURRENT is t if current buffer uses
((and (not current) (memq (current-buffer) buffer-list)) ((and (not current) (memq (current-buffer) buffer-list))
(setq buffer-list (delq (current-buffer) buffer-list)))) (setq buffer-list (delq (current-buffer) buffer-list))))
;; parse keys ;; parse keys
(let (string-init)
(dolist (buffer buffer-list) (dolist (buffer buffer-list)
(with-current-buffer buffer (with-current-buffer buffer
(if (or force (functionp bibtex-reference-keys)) (if (or force (functionp bibtex-reference-keys))
(bibtex-parse-keys)) (bibtex-parse-keys))
(unless (functionp bibtex-strings) (when (or force (functionp bibtex-strings))
(bibtex-parse-strings (bibtex-string-files-init))))) (unless string-init (setq string-init (bibtex-string-files-init)))
(bibtex-parse-strings string-init)))))
;; select BibTeX buffer ;; select BibTeX buffer
(if select (if select
(if buffer-list (if buffer-list
@ -3043,10 +3048,7 @@ if that value is non-nil.
bibtex-font-lock-syntactic-keywords)) bibtex-font-lock-syntactic-keywords))
(setq imenu-generic-expression (setq imenu-generic-expression
(list (list nil bibtex-entry-head bibtex-key-in-head)) (list (list nil bibtex-entry-head bibtex-key-in-head))
imenu-case-fold-search t) imenu-case-fold-search t))
;; XEmacs needs `easy-menu-add', Emacs does not care
(easy-menu-add bibtex-edit-menu)
(easy-menu-add bibtex-entry-menu))
(defun bibtex-field-list (entry-type) (defun bibtex-field-list (entry-type)
"Return list of allowed fields for entry ENTRY-TYPE. "Return list of allowed fields for entry ENTRY-TYPE.
@ -3873,6 +3875,7 @@ Return t if test was successful, nil otherwise."
;; Check for duplicate keys within BibTeX buffer ;; Check for duplicate keys within BibTeX buffer
(dolist (buffer buffer-list) (dolist (buffer buffer-list)
(with-current-buffer buffer (with-current-buffer buffer
(save-excursion
(let (entry-type key key-list) (let (entry-type key key-list)
(goto-char (point-min)) (goto-char (point-min))
(while (re-search-forward bibtex-entry-head nil t) (while (re-search-forward bibtex-entry-head nil t)
@ -3886,7 +3889,7 @@ Return t if test was successful, nil otherwise."
(bibtex-current-line) key) (bibtex-current-line) key)
error-list) error-list)
(push key key-list)))) (push key key-list))))
(push (cons buffer key-list) buffer-key-list)))) (push (cons buffer key-list) buffer-key-list)))))
;; Check for duplicate keys among BibTeX buffers ;; Check for duplicate keys among BibTeX buffers
(while (setq current-buf (pop buffer-list)) (while (setq current-buf (pop buffer-list))
@ -4148,6 +4151,7 @@ More precisely, reinsert the field or entry killed or yanked most recently.
With argument N, reinsert the Nth most recently killed BibTeX item. With argument N, reinsert the Nth most recently killed BibTeX item.
See also the command \\[bibtex-yank-pop]." See also the command \\[bibtex-yank-pop]."
(interactive "*p") (interactive "*p")
(unless n (setq n 1))
(bibtex-insert-kill (1- n) t) (bibtex-insert-kill (1- n) t)
(setq this-command 'bibtex-yank)) (setq this-command 'bibtex-yank))