emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r104499: lisp/textmodes/bibtex.el: va


From: Roland Winkler
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r104499: lisp/textmodes/bibtex.el: various small bug fixes
Date: Sat, 04 Jun 2011 23:58:39 -0500
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 104499
committer: Roland Winkler <address@hidden>
branch nick: trunk
timestamp: Sat 2011-06-04 23:58:39 -0500
message:
  lisp/textmodes/bibtex.el: various small bug fixes
modified:
  lisp/ChangeLog
  lisp/textmodes/bibtex.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-06-05 04:47:45 +0000
+++ b/lisp/ChangeLog    2011-06-05 04:58:39 +0000
@@ -1,5 +1,14 @@
 2011-06-05  Roland Winkler  <address@hidden>
 
+       * 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  <address@hidden>
+
        * textmodes/bibtex.el (bibtex-search-entry-globally): New
        variable.
        (bibtex-search-entry): Use it.

=== modified file 'lisp/textmodes/bibtex.el'
--- a/lisp/textmodes/bibtex.el  2011-06-05 04:47:45 +0000
+++ b/lisp/textmodes/bibtex.el  2011-06-05 04:58:39 +0000
@@ -923,7 +923,7 @@
 
    (((\"journal\" . \"\\\\=<\\(PR[ABCDEL]?\\|RMP\\)\\\\=>\")
      \"http://link.aps.org/abstract/%s/v%s/p%s\";
-     (\"journal\" \".*\" downcase)
+     (\"journal\" \".*\" upcase)
      (\"volume\" \".*\" 0)
      (\"pages\" \"\\`[A-Z]?[0-9]+\" 0)))"
   :group 'bibtex
@@ -1892,6 +1892,9 @@
       (push-mark)
       (insert (funcall fun 'bibtex-entry-kill-ring-yank-pointer
                        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)
         ;; update `bibtex-reference-keys'
         (save-excursion
@@ -2723,12 +2726,14 @@
           ((and (not current) (memq (current-buffer) buffer-list))
            (setq buffer-list (delq (current-buffer) buffer-list))))
     ;; parse keys
-    (dolist (buffer buffer-list)
-      (with-current-buffer buffer
-        (if (or force (functionp bibtex-reference-keys))
-            (bibtex-parse-keys))
-        (unless (functionp bibtex-strings)
-          (bibtex-parse-strings (bibtex-string-files-init)))))
+    (let (string-init)
+      (dolist (buffer buffer-list)
+        (with-current-buffer buffer
+          (if (or force (functionp bibtex-reference-keys))
+              (bibtex-parse-keys))
+          (when (or force (functionp bibtex-strings))
+            (unless string-init (setq string-init (bibtex-string-files-init)))
+            (bibtex-parse-strings string-init)))))
     ;; select BibTeX buffer
     (if select
         (if buffer-list
@@ -3043,10 +3048,7 @@
         bibtex-font-lock-syntactic-keywords))
   (setq imenu-generic-expression
         (list (list nil bibtex-entry-head bibtex-key-in-head))
-        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))
+        imenu-case-fold-search t))
 
 (defun bibtex-field-list (entry-type)
   "Return list of allowed fields for entry ENTRY-TYPE.
@@ -3873,20 +3875,21 @@
     ;; Check for duplicate keys within BibTeX buffer
     (dolist (buffer buffer-list)
       (with-current-buffer buffer
-        (let (entry-type key key-list)
-          (goto-char (point-min))
-          (while (re-search-forward bibtex-entry-head nil t)
-            (setq entry-type (bibtex-type-in-head)
-                  key (bibtex-key-in-head))
-            (if (or (and strings (bibtex-string= entry-type "string"))
-                    (assoc-string entry-type bibtex-entry-field-alist t))
-                (if (member key key-list)
-                    (push (format "%s:%d: Duplicate key `%s'\n"
-                                  (buffer-file-name)
-                                  (bibtex-current-line) key)
-                          error-list)
-                  (push key key-list))))
-          (push (cons buffer key-list) buffer-key-list))))
+        (save-excursion
+          (let (entry-type key key-list)
+            (goto-char (point-min))
+            (while (re-search-forward bibtex-entry-head nil t)
+              (setq entry-type (bibtex-type-in-head)
+                    key (bibtex-key-in-head))
+              (if (or (and strings (bibtex-string= entry-type "string"))
+                      (assoc-string entry-type bibtex-entry-field-alist t))
+                  (if (member key key-list)
+                      (push (format "%s:%d: Duplicate key `%s'\n"
+                                    (buffer-file-name)
+                                    (bibtex-current-line) key)
+                            error-list)
+                    (push key key-list))))
+            (push (cons buffer key-list) buffer-key-list)))))
 
     ;; Check for duplicate keys among BibTeX buffers
     (while (setq current-buf (pop buffer-list))
@@ -4148,6 +4151,7 @@
 With argument N, reinsert the Nth most recently killed BibTeX item.
 See also the command \\[bibtex-yank-pop]."
   (interactive "*p")
+  (unless n (setq n 1))
   (bibtex-insert-kill (1- n) t)
   (setq this-command 'bibtex-yank))
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]