]> 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 b7354ff71f8bf28fed72d17ef5354736e15df36b..968c33cb4de70e87c070608d734f60f2c97bc083 100644 (file)
@@ -1,8 +1,6 @@
 ;;; mh-alias.el --- MH-E mail alias completion and expansion
 
-;; Copyright (C) 1994, 1995, 1996, 1997,
-;;   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-;;   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
 
@@ -143,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
@@ -234,7 +234,7 @@ returns the string unchanged if not defined. The same is done here."
         (let ((user-arg (if user "-user" "-nouser")))
           (mh-exec-cmd-quiet t "ali" user-arg "-nolist" alias))
         (goto-char (point-max))
-        (if (looking-at "^$") (delete-backward-char 1))
+        (if (looking-at "^$") (delete-char -1))
         (buffer-substring (point-min)(point-max)))
     (error (progn
              (message "%s" (error-message-string err))
@@ -274,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
@@ -288,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))))))
@@ -298,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
@@ -408,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."
@@ -628,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)
@@ -670,5 +681,4 @@ show buffer, the message in the show buffer doesn't match."
 ;; sentence-end-double-space: nil
 ;; End:
 
-;; arch-tag: 49879e46-5aa3-4569-bece-e5a58731d690
 ;;; mh-alias.el ends here