[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#39686: 25.2; Wrong behaviour of bibtex-autokey-name-change-strings
From: |
Roland Winkler |
Subject: |
bug#39686: 25.2; Wrong behaviour of bibtex-autokey-name-change-strings |
Date: |
Fri, 21 Feb 2020 13:50:01 -0600 |
On Fri Feb 21 2020 Eli Zaretskii wrote:
> I don't see a patch, just a defvar. Which part(s) of that are
> modified, and how?
>
> Also, what commands/features will be affected by this change?
I am sorry, I had tried to keep things readable for the OP.
A proper patch is attached below.
The patch affects the autokey machinery of bibtex-mode that
calculates keys for new BibTeX entries based on the content of an
entry. The entry point for the autokey machinery is the function
bibtex-generate-autokey. In bibtex.el, this function is called once
by the user command bibtex-clean-entry. No other package inside
emacs relies on this.
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index a7be57e..670e763 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1006,32 +1006,36 @@ bibtex-autokey-expand-strings
:type 'boolean)
(defvar bibtex-autokey-transcriptions
- '(;; language specific characters
- ("\\\\aa" . "a") ; \aa -> a
- ("\\\\AA" . "A") ; \AA -> A
- ("\\\"a\\|\\\\\\\"a\\|\\\\ae" . "ae") ; "a,\"a,\ae -> ae
- ("\\\"A\\|\\\\\\\"A\\|\\\\AE" . "Ae") ; "A,\"A,\AE -> Ae
- ("\\\\i" . "i") ; \i -> i
- ("\\\\j" . "j") ; \j -> j
- ("\\\\l" . "l") ; \l -> l
- ("\\\\L" . "L") ; \L -> L
- ("\\\"o\\|\\\\\\\"o\\|\\\\o\\|\\\\oe" . "oe") ; "o,\"o,\o,\oe -> oe
- ("\\\"O\\|\\\\\\\"O\\|\\\\O\\|\\\\OE" . "Oe") ; "O,\"O,\O,\OE -> Oe
- ("\\\"s\\|\\\\\\\"s\\|\\\\3" . "ss") ; "s,\"s,\3 -> ss
- ("\\\"u\\|\\\\\\\"u" . "ue") ; "u,\"u -> ue
- ("\\\"U\\|\\\\\\\"U" . "Ue") ; "U,\"U -> Ue
- ;; accents
-
("\\\\`\\|\\\\'\\|\\\\\\^\\|\\\\~\\|\\\\=\\|\\\\\\.\\|\\\\u\\|\\\\v\\|\\\\H\\|\\\\t\\|\\\\c\\|\\\\d\\|\\\\b"
. "")
- ;; braces, quotes, concatenation.
- ("[`'\"{}#]" . "")
- ("\\\\-" . "") ; \- ->
- ;; spaces
- ("\\\\?[ \t\n]+\\|~" . " "))
+ (nconc
+ (mapcar (lambda (a) (cons (regexp-opt (car a)) (cdr a)))
+ '(;; language specific characters
+ (("\\aa") . "a") ; \aa -> a
+ (("\\AA") . "A") ; \AA -> A
+ (("\"a" "\\\"a" "\\ae") . "ae") ; "a,\"a,\ae -> ae
+ (("\"A" "\\\"A" "\\AE") . "Ae") ; "A,\"A,\AE -> Ae
+ (("\\i") . "i") ; \i -> i
+ (("\\j") . "j") ; \j -> j
+ (("\\l") . "l") ; \l -> l
+ (("\\L") . "L") ; \L -> L
+ (("\"o" "\\\"o" "\\o" "\\oe") . "oe") ; "o,\"o,\o,\oe -> oe
+ (("\"O" "\\\"O" "\\O" "\\OE") . "Oe") ; "O,\"O,\O,\OE -> Oe
+ (("\"s" "\\\"s" "\\3") . "ss") ; "s,\"s,\3 -> ss
+ (("\"u" "\\\"u") . "ue") ; "u,\"u -> ue
+ (("\"U" "\\\"U") . "Ue") ; "U,\"U -> Ue
+ ;; hyphen, accents
+ (("\\-" "\\`" "\\'" "\\^" "\\~" "\\=" "\\." "\\u" "\\v"
+ "\\H" "\\t" "\\c" "\\d" "\\b") . "")
+ ;; space
+ (("~") . " ")))
+ ;; more spaces
+ '(("[\s\t\n]*\\(?:\\\\\\)?[\s\t\n]+" . " ")
+ ;; braces, quotes, concatenation.
+ ("[`'\"{}#]" . "")))
"Alist of (OLD-REGEXP . NEW-STRING) pairs.
-Used by the default values of `bibtex-autokey-name-change-strings' and
+Used as default values of `bibtex-autokey-name-change-strings' and
`bibtex-autokey-titleword-change-strings'. Defaults to translating some
language specific characters to their ASCII transcriptions, and
-removing any character accents.")
+removing any accent characters.")
(defcustom bibtex-autokey-name-change-strings
bibtex-autokey-transcriptions
bug#39686: 25.2; Wrong behaviour of bibtex-autokey-name-change-strings, Mattias Engdegård, 2020/02/21