# HG changeset patch # User Roland Winkler # Date 1142805325 0 # Node ID 98eee222dcebfe1c7a71e66238bf03593043251c # Parent 9f9192ca690738f2b0944bab1672817f5c1855db * textmodes/bibtex.el (bibtex-include-OPTkey) (bibtex-entry-field-alist, bibtex-generate-url-list): Mark as risky. (bibtex-autokey-name-case-convert) (bibtex-autokey-titleword-case-convert): Make these the aliases for the following two variables. (bibtex-autokey-name-case-convert-function) (bibtex-autokey-titleword-case-convert-function): Make these the real names. (bibtex-font-lock-keywords): Make bibtex-font-lock-url and bibtex-font-lock-crossref sublists. (bibtex-mode): Revert 2005-12-30 change (which made completion-ignore-case buffer-local). (bibtex-url): Simplify diff -r 9f9192ca6907 -r 98eee222dceb lisp/ChangeLog --- a/lisp/ChangeLog Sun Mar 19 21:52:01 2006 +0000 +++ b/lisp/ChangeLog Sun Mar 19 21:55:25 2006 +0000 @@ -1,3 +1,20 @@ +2006-03-19 Roland Winkler + + * textmodes/bibtex.el (bibtex-include-OPTkey) + (bibtex-entry-field-alist, bibtex-generate-url-list): Mark as + risky. + (bibtex-autokey-name-case-convert) + (bibtex-autokey-titleword-case-convert): Make these the aliases + for the following two variables. + (bibtex-autokey-name-case-convert-function) + (bibtex-autokey-titleword-case-convert-function): Make these the + real names. + (bibtex-font-lock-keywords): Make bibtex-font-lock-url and + bibtex-font-lock-crossref sublists. + (bibtex-mode): Revert 2005-12-30 change (which made + completion-ignore-case buffer-local). + (bibtex-url): Simplify + 2006-03-19 Kim F. Storm * emulation/cua-rect.el (cua--highlight-rectangle): Set overlay diff -r 9f9192ca6907 -r 98eee222dceb lisp/textmodes/bibtex.el --- a/lisp/textmodes/bibtex.el Sun Mar 19 21:52:01 2006 +0000 +++ b/lisp/textmodes/bibtex.el Sun Mar 19 21:55:25 2006 +0000 @@ -88,6 +88,7 @@ (string :tag "Initial text") (function :tag "Initialize Function" :value fun) (other :tag "Default" t))) +(put 'bibtex-include-OPTkey 'risky-local-variable t) (defcustom bibtex-user-optional-fields '(("annote" "Personal annotation (ignored)")) @@ -437,6 +438,7 @@ of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the field is an alternative. ALTERNATIVE-FLAG may be t only in the REQUIRED or CROSSREF-REQUIRED lists.") +(put 'bibtex-entry-field-alist 'risky-local-variable t) (defcustom bibtex-comment-start "@Comment" "String starting a BibTeX comment." @@ -595,7 +597,7 @@ :type '(repeat (cons (regexp :tag "Old") (string :tag "New")))) -(defcustom bibtex-autokey-name-case-convert 'downcase +(defcustom bibtex-autokey-name-case-convert-function 'downcase "Function called for each name to perform case conversion. See `bibtex-generate-autokey' for details." :group 'bibtex-autokey @@ -604,6 +606,8 @@ (const :tag "Capitalize" capitalize) (const :tag "Upcase" upcase) (function :tag "Conversion function"))) +(defvaralias 'bibtex-autokey-name-case-convert + 'bibtex-autokey-name-case-convert-function) (defcustom bibtex-autokey-name-length 'infty "Number of characters from name to incorporate into key. @@ -666,7 +670,7 @@ :group 'bibtex-autokey :type '(repeat regexp)) -(defcustom bibtex-autokey-titleword-case-convert 'downcase +(defcustom bibtex-autokey-titleword-case-convert-function 'downcase "Function called for each titleword to perform case conversion. See `bibtex-generate-autokey' for details." :group 'bibtex-autokey @@ -675,6 +679,8 @@ (const :tag "Capitalize" capitalize) (const :tag "Upcase" upcase) (function :tag "Conversion function"))) +(defvaralias 'bibtex-autokey-titleword-case-convert + 'bibtex-autokey-titleword-case-convert-function) (defcustom bibtex-autokey-titleword-abbrevs nil "Determines exceptions to the usual abbreviation mechanism. @@ -847,6 +853,7 @@ (choice (string :tag "Replacement") (integer :tag "Sub-match") (function :tag "Filter")))))))) +(put 'bibtex-generate-url-list 'risky-local-variable t) (defcustom bibtex-expand-strings nil "If non-nil, expand strings when extracting the content of a BibTeX field." @@ -1164,7 +1171,7 @@ (,(concat "^[ \t]*\\(" bibtex-field-name "\\)[ \t]*=") 1 font-lock-variable-name-face) ;; url - bibtex-font-lock-url bibtex-font-lock-crossref) + (bibtex-font-lock-url) (bibtex-font-lock-crossref)) "*Default expressions to highlight in BibTeX mode.") (defvar bibtex-font-lock-url-regexp @@ -2085,7 +2092,7 @@ ;; --> take the last token (match-string 1 fullname)) (t (error "Name `%s' is incorrectly formed" fullname))))) - (funcall bibtex-autokey-name-case-convert + (funcall bibtex-autokey-name-case-convert-function (bibtex-autokey-abbrev name bibtex-autokey-name-length)))) (defun bibtex-autokey-get-year () @@ -2147,7 +2154,7 @@ (setq alist (cdr alist))) (if alist (cdar alist) - (funcall bibtex-autokey-titleword-case-convert + (funcall bibtex-autokey-titleword-case-convert-function (bibtex-autokey-abbrev titleword bibtex-autokey-titleword-length))))) (defun bibtex-generate-autokey () @@ -2167,7 +2174,7 @@ take at least `bibtex-autokey-name-length' characters (truncate only after a consonant or at a word end). 5. Convert all last names using the function - `bibtex-autokey-name-case-convert'. + `bibtex-autokey-name-case-convert-function'. 6. Build the name part of the key by concatenating all abbreviated last names with the string `bibtex-autokey-name-separator' between any two. If there are more names in the name field than names used in the name @@ -2199,7 +2206,7 @@ `bibtex-autokey-titleword-length' characters (truncate only after a consonant or at a word end). 5. Convert all title words using the function - `bibtex-autokey-titleword-case-convert'. + `bibtex-autokey-titleword-case-convert-function'. 6. Build the title part by concatenating all abbreviated title words with the string `bibtex-autokey-titleword-separator' between any two. @@ -2531,7 +2538,7 @@ Used as default value of `bibtex-summary-function'." ;; It would be neat to customize this function. How? (if (looking-at bibtex-entry-maybe-empty-head) - (let* ((bibtex-autokey-name-case-convert 'identity) + (let* ((bibtex-autokey-name-case-convert-function 'identity) (bibtex-autokey-name-length 'infty) (bibtex-autokey-names 1) (bibtex-autokey-names-stretch 0) @@ -2542,7 +2549,7 @@ (year (bibtex-autokey-get-year)) (bibtex-autokey-titlewords 5) (bibtex-autokey-titlewords-stretch 2) - (bibtex-autokey-titleword-case-convert 'identity) + (bibtex-autokey-titleword-case-convert-function 'identity) (bibtex-autokey-titleword-length 5) (bibtex-autokey-titleword-separator " ") (title (bibtex-autokey-get-title)) @@ -2785,7 +2792,6 @@ (list (list nil bibtex-entry-head bibtex-key-in-head)) imenu-case-fold-search t) (make-local-variable 'choose-completion-string-functions) - (make-local-variable 'completion-ignore-case) ;; XEmacs needs easy-menu-add, Emacs does not care (easy-menu-add bibtex-edit-menu) (easy-menu-add bibtex-entry-menu) @@ -4155,9 +4161,9 @@ (cond ((eq compl 'key) ;; key completion: no cleanup needed - (setq choose-completion-string-functions nil - completion-ignore-case nil) - (bibtex-complete-internal (bibtex-global-key-alist))) + (setq choose-completion-string-functions nil) + (let (completion-ignore-case) + (bibtex-complete-internal (bibtex-global-key-alist)))) ((eq compl 'crossref-key) ;; crossref key completion @@ -4167,40 +4173,35 @@ ;; non-nil. Therefore, `choose-completion-string-functions' is ;; always set (either to non-nil or nil) when a new completion ;; is requested. - ;; Also, `choose-completion-delete-max-match' requires - ;; that we set `completion-ignore-case' (i.e., binding via `let' - ;; is not sufficient). - (setq completion-ignore-case nil - choose-completion-string-functions - (lambda (choice buffer mini-p base-size) - (setq choose-completion-string-functions nil) - (choose-completion-string choice buffer base-size) - (bibtex-complete-crossref-cleanup choice) - t)) ; needed by choose-completion-string-functions - - (bibtex-complete-crossref-cleanup (bibtex-complete-internal - (bibtex-global-key-alist)))) + (let (completion-ignore-case) + (setq choose-completion-string-functions + (lambda (choice buffer mini-p base-size) + (setq choose-completion-string-functions nil) + (choose-completion-string choice buffer base-size) + (bibtex-complete-crossref-cleanup choice) + t)) ; needed by choose-completion-string-functions + (bibtex-complete-crossref-cleanup + (bibtex-complete-internal (bibtex-global-key-alist))))) ((eq compl 'string) ;; string key completion: no cleanup needed - (setq choose-completion-string-functions nil - completion-ignore-case t) - (bibtex-complete-internal bibtex-strings)) + (setq choose-completion-string-functions nil) + (let ((completion-ignore-case t)) + (bibtex-complete-internal bibtex-strings))) (compl ;; string completion - (setq completion-ignore-case t - choose-completion-string-functions - `(lambda (choice buffer mini-p base-size) - (setq choose-completion-string-functions nil) - (choose-completion-string choice buffer base-size) - (bibtex-complete-string-cleanup choice ',compl) - t)) ; needed by choose-completion-string-functions - (bibtex-complete-string-cleanup (bibtex-complete-internal compl) - compl)) - - (t (setq choose-completion-string-functions nil - completion-ignore-case nil) ; default + (let ((completion-ignore-case t)) + (setq choose-completion-string-functions + `(lambda (choice buffer mini-p base-size) + (setq choose-completion-string-functions nil) + (choose-completion-string choice buffer base-size) + (bibtex-complete-string-cleanup choice ',compl) + t)) ; needed by choose-completion-string-functions + (bibtex-complete-string-cleanup (bibtex-complete-internal compl) + compl))) + + (t (setq choose-completion-string-functions nil) (error "Point outside key or BibTeX field"))))) (defun bibtex-Article () @@ -4334,16 +4335,16 @@ (dolist (step scheme) (setq field (cdr (assoc-string (car step) fields-alist t))) (if (string-match (nth 1 step) field) - (setq field (cond ((functionp (nth 2 step)) - (funcall (nth 2 step) field)) - ((numberp (nth 2 step)) - (match-string (nth 2 step) field)) - (t - (replace-match (nth 2 step) t nil field)))) + (push (cond ((functionp (nth 2 step)) + (funcall (nth 2 step) field)) + ((numberp (nth 2 step)) + (match-string (nth 2 step) field)) + (t + (replace-match (nth 2 step) t nil field))) + obj) ;; If the scheme is set up correctly, ;; we should never reach this point - (error "Match failed: %s" field)) - (push field obj)) + (error "Match failed: %s" field))) (if fmt (apply 'format fmt (nreverse obj)) (apply 'concat (nreverse obj))))) (browse-url (message "%s" url))))