Function: mail-get-names
mail-get-names is a byte-compiled function defined in mailalias.el.gz.
Signature
(mail-get-names PREFIX)
Documentation
Fetch local users and global mail addresses for completion.
Consults /etc/passwd and a directory service if one is set up via
mail-directory-function.
PREFIX is the string we want to complete.
Source Code
;; Defined in /usr/src/emacs/lisp/mail/mailalias.el.gz
(defun mail-get-names (prefix)
"Fetch local users and global mail addresses for completion.
Consults `/etc/passwd' and a directory service if one is set up via
`mail-directory-function'.
PREFIX is the string we want to complete."
(if (eq mail-local-names t)
(with-current-buffer (generate-new-buffer " passwd")
(let ((files mail-passwd-files))
(while files
(insert-file-contents (car files) nil nil nil t)
(setq files (cdr files))))
(if mail-passwd-command
(call-process shell-file-name nil t nil
shell-command-switch mail-passwd-command))
(goto-char (point-min))
(setq mail-local-names nil)
(while (not (eobp))
;;Recognize lines like
;; nobody:*:65534:65534::/:
;; +demo::::::/bin/csh
;; +ethanb
;;while skipping
;; +@SOFTWARE
;; The second \(...\) matches the user id.
(if (looking-at "\\+?\\([^:@\n+]+\\):[^:\n]*:\\([^\n:]*\\):")
(add-to-list 'mail-local-names
(cons (match-string 1)
(user-full-name
(string-to-number (match-string 2))))))
(beginning-of-line 2))
(kill-buffer (current-buffer))))
(if (or (eq mail-names t)
(eq mail-directory-names t))
(let (directory)
(and mail-directory-function
(eq mail-directory-names t)
(setq directory
(mail-directory (if mail-directory-requery prefix))))
(or mail-directory-requery
(setq mail-directory-names directory))
(if (or directory
(eq mail-names t))
(setq mail-names
(sort (append (if (consp mail-aliases)
(mapcar
(lambda (a) (list (car a)))
mail-aliases))
(if (consp mail-local-names)
mail-local-names)
(or directory
(when (consp mail-directory-names)
mail-directory-names)))
(lambda (a b)
;; Should cache downcased strings.
(string< (downcase (car a))
(downcase (car b)))))))))
(mail-completion-expand mail-names))