]> code.delx.au - gnu-emacs/blobdiff - lisp/mh-e/mh-alias.el
Remove compatibility with Emacs 24.3 in octave-mode
[gnu-emacs] / lisp / mh-e / mh-alias.el
index 061a5b3dc94f97ae0f92c087f67a96ac8ace879a..968c33cb4de70e87c070608d734f60f2c97bc083 100644 (file)
@@ -1,6 +1,6 @@
 ;;; mh-alias.el --- MH-E mail alias completion and expansion
 
-;; Copyright (C) 1994-1997, 2001-201 Free Software Foundation, Inc.
+;; Copyright (C) 1994-1997, 2001-2016 Free Software Foundation, Inc.
 
 ;; Author: Peter S. Galbraith <psg@debian.org>
 ;; Maintainer: Bill Wohler <wohler@newt.com>
     (define-key map " " 'self-insert-command)
     map))
 
-(defvar mh-alias-system-aliases
+(defcustom mh-alias-system-aliases
   '("/etc/nmh/MailAliases" "/etc/mh/MailAliases"
     "/usr/lib/mh/MailAliases" "/usr/share/mailutils/mh/MailAliases"
     "/etc/passwd")
-  "*A list of system files which are a source of aliases.
+  "A list of system files which are a source of aliases.
 If these files are modified, they are automatically reread. This list
 need include only system aliases and the passwd file, since personal
 alias files listed in your \"Aliasfile:\" MH profile component are
 automatically included. You can update the alias list manually using
-\\[mh-alias-reload].")
+\\[mh-alias-reload]."
+  :type '(repeat file)
+  :group 'mh-alias)
 
 \f
 
@@ -141,7 +143,7 @@ Exclude all aliases already in `mh-alias-alist' from \"ali\""
             (insert-file-contents "/etc/passwd")))
        ((stringp mh-alias-local-users)
         (insert mh-alias-local-users "\n")
-        (shell-command-on-region (point-min) (point-max) mh-alias-local-users t)
+        (shell-command-on-region (point-min) (point-max) mh-alias-local-users t t)
         (goto-char (point-min))))
       (while  (< (point) (point-max))
         (cond
@@ -272,7 +274,7 @@ Blind aliases or users from /etc/passwd are not expanded."
                       (completing-read prompt mh-alias-alist nil nil) ",")))))
       (if (not mh-alias-expand-aliases-flag)
           (mapconcat 'identity the-answer ", ")
-        ;; Loop over all elements, checking if in passwd aliast or blind first
+        ;; Loop over all elements, checking if in passwd alias or blind first
         (mapconcat 'mh-alias-expand the-answer ",\n ")))))
 
 ;;;###mh-autoload
@@ -286,7 +288,7 @@ Blind aliases or users from /etc/passwd are not expanded."
              (the-name (buffer-substring-no-properties beg (point))))
         (if (mh-assoc-string the-name mh-alias-alist t)
             (message "%s -> %s" the-name (mh-alias-expand the-name))
-          ;; Check if if was a single word likely to be an alias
+          ;; Check if it was a single word likely to be an alias
           (if (and (equal mh-alias-flash-on-comma 1)
                    (not (string-match " " the-name)))
               (message "No alias for %s" the-name))))))
@@ -296,16 +298,27 @@ Blind aliases or users from /etc/passwd are not expanded."
 (defun mh-alias-letter-expand-alias ()
   "Expand mail alias before point."
   (mh-alias-reload-maybe)
-  (let* ((end (point))
-         (begin (mh-beginning-of-word))
-         (input (buffer-substring-no-properties begin end)))
-    (mh-complete-word input mh-alias-alist begin end)
-    (when mh-alias-expand-aliases-flag
-      (let* ((end (point))
-             (expansion (mh-alias-expand (buffer-substring begin end))))
-        (delete-region begin end)
-        (insert expansion)))))
-
+  (let* ((begin (mh-beginning-of-word))
+         (end (save-excursion
+                (goto-char begin)
+                (mh-beginning-of-word -1))))
+    (when (>= end (point))
+      (list
+       begin (if (fboundp 'completion-at-point) end (point))
+       (if (not mh-alias-expand-aliases-flag)
+           mh-alias-alist
+         (lambda (string pred action)
+           (case action
+             ((nil)
+              (let ((res (try-completion string mh-alias-alist pred)))
+                (if (or (eq res t)
+                        (and (stringp res)
+                             (eq t (try-completion res mh-alias-alist pred))))
+                    (or (mh-alias-expand (if (stringp res) res string))
+                        res)
+                  res)))
+             ((t) (all-completions string mh-alias-alist pred))
+             ((lambda) (mh-test-completion string mh-alias-alist pred)))))))))
 \f
 
 ;;; Alias File Updating
@@ -406,7 +419,7 @@ string is converted to lower case."
 
 (defun mh-alias-insert-file (&optional alias)
   "Return filename which should be used to add ALIAS.
-The value of the option `mh-alias-insert-file' is used if non-nil\;
+The value of the option `mh-alias-insert-file' is used if non-nil;
 otherwise the value of the \"Aliasfile:\" profile component is used.
 If the alias already exists, try to return the name of the file that
 contains it."
@@ -626,10 +639,10 @@ filing messages."
         (message "Making passwd aliases...")
         (setq passwd-matches
               (mapconcat
-               '(lambda (elem)
-                  (if (or (string-match regexp (car elem))
-                          (string-match regexp (cadr elem)))
-                      (format "%s: %s\n" (car elem) (cadr elem))))
+               (lambda (elem)
+                 (if (or (string-match regexp (car elem))
+                         (string-match regexp (cadr elem)))
+                     (format "%s: %s\n" (car elem) (cadr elem))))
                mh-alias-passwd-alist ""))
         (message "Making passwd aliases...done")))
     (if (and (string-equal "" matches)