emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] emacs/lisp/textmodes bibtex.el


From: Roland Winkler
Subject: [Emacs-diffs] emacs/lisp/textmodes bibtex.el
Date: Fri, 16 Jan 2009 14:21:28 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Roland Winkler <winkler>        09/01/16 14:21:28

Modified files:
        lisp/textmodes : bibtex.el 

Log message:
        (bibtex-format-entry): For updating field delimiters, allow
        fields that are composed of strings and string constants.
        (bibtex-mode): Doc fix.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/textmodes/bibtex.el?cvsroot=emacs&r1=1.141&r2=1.142

Patches:
Index: bibtex.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/textmodes/bibtex.el,v
retrieving revision 1.141
retrieving revision 1.142
diff -u -b -r1.141 -r1.142
--- bibtex.el   14 Jan 2009 08:00:57 -0000      1.141
+++ bibtex.el   16 Jan 2009 14:21:26 -0000      1.142
@@ -1892,6 +1892,8 @@
                               last-comma delimiters unify-case braces
                               strings)
                   bibtex-entry-format))
+        (left-delim-re (regexp-quote (bibtex-field-left-delimiter)))
+        (right-delim-re (regexp-quote (bibtex-field-right-delimiter)))
         bounds crossref-key req-field-list default-field-list field-list
         alt-fields error-field-name)
     (unwind-protect
@@ -1998,13 +2000,22 @@
                     ;; update delimiters
                     (when (memq 'delimiters format)
                       (goto-char beg-text)
-                      (when (looking-at "[{\"]")
+                      ;; simplified from `bibtex-parse-field-text', as we
+                      ;; already checked that the field format is correct
+                      (while (< (point) end-text)
+                        (if (looking-at bibtex-field-const)
+                            (goto-char (match-end 0))
+                          (let ((boundaries (bibtex-parse-field-string)))
+                            (unless (looking-at right-delim-re)
                         (delete-char 1)
                         (insert (bibtex-field-left-delimiter)))
-                      (goto-char (1- (marker-position end-text)))
-                      (when (looking-at "[}\"]")
+                            (goto-char (1- (cdr boundaries)))
+                            (if (looking-at left-delim-re)
+                                (forward-char)
                         (delete-char 1)
-                        (insert (bibtex-field-right-delimiter))))
+                              (insert (bibtex-field-right-delimiter)))))
+                        (if (looking-at "[ \t\n]*#[ \t\n]*")
+                            (goto-char (match-end 0)))))
 
                     ;; update page dashes
                     (if (and (memq 'page-dashes format)
@@ -2014,7 +2025,9 @@
                                      "\\([\"{][0-9]+\\)[ \t\n]*--?[ 
\t\n]*\\([0-9]+[\"}]\\)")))
                         (replace-match "\\1-\\2"))
 
-                    ;; remove whitespace at beginning and end of field
+                    ;; Remove whitespace at beginning and end of field.
+                    ;; We do not look at individual parts of the field
+                    ;; as {foo } # bar # { baz} is a fine field.
                     (when (memq 'whitespace format)
                       (goto-char beg-text)
                       (if (looking-at "\\([{\"]\\)[ \t\n]+")
@@ -2932,7 +2945,7 @@
 
 General information on working with BibTeX mode:
 
-Use commands such as \\[bibtex-Book] to get a template for a specific entry.
+Use commands such as \\<bibtex-mode-map>\\[bibtex-Book] to get a template for 
a specific entry.
 Then fill in all desired fields using \\[bibtex-next-field] to jump from field
 to field.  After having filled in all desired fields in the entry, clean the
 new entry with the command \\[bibtex-clean-entry].




reply via email to

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