Function: bibtex-autokey-demangle-name
bibtex-autokey-demangle-name is a byte-compiled function defined in
bibtex.el.gz.
Signature
(bibtex-autokey-demangle-name FULLNAME)
Documentation
Get the last part from a well-formed FULLNAME and perform abbreviations.
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/bibtex.el.gz
(defun bibtex-autokey-demangle-name (fullname)
"Get the last part from a well-formed FULLNAME and perform abbreviations."
(let* (case-fold-search
(name (cond ((string-match "\\([[:upper:]][^, ]*\\)[^,]*," fullname)
;; Name is of the form "von Last, First" or
;; "von Last, Jr, First"
;; --> Take the first capital part before the comma
(match-string 1 fullname))
((string-match "\\([^, ]*\\)," fullname)
;; Strange name: we have a comma, but nothing capital
;; So we accept even lowercase names
(match-string 1 fullname))
((string-match "\\(\\<[[:lower:]][^ ]* +\\)+\\([[:upper:]][^ ]*\\)"
fullname)
;; name is of the form "First von Last", "von Last",
;; "First von von Last", or "d'Last"
;; --> take the first capital part after the "von" parts
(match-string 2 fullname))
((string-match "\\([^ ]+\\) *\\'" fullname)
;; name is of the form "First Middle Last" or "Last"
;; --> take the last token
(match-string 1 fullname))
(t (user-error "Name `%s' is incorrectly formed"
fullname)))))
(funcall bibtex-autokey-name-case-convert-function
(bibtex-autokey-abbrev name bibtex-autokey-name-length))))