Function: mh-alias-suggest-alias

mh-alias-suggest-alias is a byte-compiled function defined in mh-alias.el.gz.

Signature

(mh-alias-suggest-alias STRING &optional NO-COMMA-SWAP)

Documentation

Suggest an alias for STRING.

Don't reverse the order of strings separated by a comma if NO-COMMA-SWAP is non-nil.

Source Code

;; Defined in /usr/src/emacs/lisp/mh-e/mh-alias.el.gz
;;; Alias File Updating

(defun mh-alias-suggest-alias (string &optional no-comma-swap)
  "Suggest an alias for STRING.
Don't reverse the order of strings separated by a comma if
NO-COMMA-SWAP is non-nil."
  (cond
   ((string-match "^<\\(.*\\)>$" string)
    ;; <somename@foo.bar>  -> recurse, stripping brackets.
    (mh-alias-suggest-alias (match-string 1 string) no-comma-swap))
   ((string-match "^\\sw+$" string)
    ;; One word -> downcase it.
    (downcase string))
   ((string-match "^\\(\\sw+\\)\\s-+\\(\\sw+\\)$" string)
    ;; Two words -> first.last
    (downcase
     (format "%s.%s" (match-string 1 string) (match-string 2 string))))
   ((string-match "^\\([-a-zA-Z0-9._]+\\)@[-a-zA-Z0-9_]+\\.+[a-zA-Z0-9]+$"
                  string)
    ;; email only -> downcase username
    (downcase (match-string 1 string)))
   ((string-match "^\"\\(.*\\)\".*" string)
    ;; "Some name" <somename@foo.bar>  -> recurse -> "Some name"
    (mh-alias-suggest-alias (match-string 1 string) no-comma-swap))
   ((string-match "^\\(.*\\) +<.*>$" string)
    ;; Some name <somename@foo.bar>  -> recurse -> Some name
    (mh-alias-suggest-alias (match-string 1 string) no-comma-swap))
   ((string-match (concat goto-address-mail-regexp " +(\\(.*\\))$") string)
    ;; somename@foo.bar (Some name)  -> recurse -> Some name
    (mh-alias-suggest-alias (match-string 1 string) no-comma-swap))
   ((string-match "^\\(Dr\\|Prof\\)\\.? +\\(.*\\)" string)
    ;; Strip out title
    (mh-alias-suggest-alias (match-string 2 string) no-comma-swap))
   ((string-match "^\\(.*\\), +\\(Jr\\.?\\|II+\\)$" string)
    ;; Strip out tails with comma
    (mh-alias-suggest-alias (match-string 1 string) no-comma-swap))
   ((string-match "^\\(.*\\) +\\(Jr\\.?\\|II+\\)$" string)
    ;; Strip out tails
    (mh-alias-suggest-alias (match-string 1 string) no-comma-swap))
   ((string-match "^\\(\\sw+\\) +[A-Z]\\.? +\\(.*\\)$" string)
    ;; Strip out initials
    (mh-alias-suggest-alias
     (format "%s %s" (match-string 1 string) (match-string 2 string))
     no-comma-swap))
   ((and (not no-comma-swap)
         (string-match "^\\([^,]+\\), +\\(.*\\)$" string))
    ;; Reverse order of comma-separated fields to handle:
    ;;  From: "Galbraith, Peter" <psg@debian.org>
    ;; but don't this for a name string extracted from the passwd file
    ;; with mh-alias-passwd-gecos-comma-separator-flag set to nil.
    (mh-alias-suggest-alias
     (format "%s %s" (match-string 2 string) (match-string 1 string))
     no-comma-swap))
   (t
    ;; Output string, with spaces replaced by dots.
    (mh-alias-canonicalize-suggestion string))))