changeset 20097:531623bfd08e

Customize. (mail-abbrevs-enable, mail-abbrevs-disable): New functions. (mail-abbrevs-mode): New variable enables use of the package. Call mail-abbrevs-enable or mail-abbrevs-disable. (mail-abbrevs-only): New variable. (sendmail-pre-abbrev-expand-hook): Implement mail-abbrevs-only.
author Karl Heuer <kwzh@gnu.org>
date Tue, 21 Oct 1997 02:54:50 +0000
parents f83d5ee9a78e
children e86f41e696b1
files lisp/mail/mailabbrev.el
diffstat 1 files changed, 45 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/mailabbrev.el	Mon Oct 20 03:49:42 1997 +0000
+++ b/lisp/mail/mailabbrev.el	Tue Oct 21 02:54:50 1997 +0000
@@ -1,6 +1,6 @@
 ;;; mailabbrev.el --- abbrev-expansion of mail aliases.
 
-;; Copyright (C) 1985, 1986, 87, 92, 93, 1996 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 86, 87, 92, 93, 96, 1997 Free Software Foundation, Inc.
 
 ;; Author: Jamie Zawinski <jwz@lucid.com>
 ;; Maintainer: Jamie Zawinski <jwz@lucid.com>
@@ -129,6 +129,26 @@
 
 (require 'sendmail)
 
+(defgroup mail-abbrev nil
+  "Expand mail aliases as abbrevs, in certain mail headers."
+  :group 'abbrev-mode)
+
+(defcustom mail-abbrevs-mode nil
+  "*Non-nil means expand mail aliases as abbrevs, in certain message headers."
+  :type 'boolean
+  :group 'mail-abbrev
+  :require 'mailabbrev
+  :set '(lambda (symbol value)
+	  (setq mail-abbrevs-mode value)
+	  (if value (mail-abbrevs-enable) (mail-abbrevs-disable)))
+  :initialize 'custom-initialize-default)
+
+(defcustom mail-abbrevs-only nil
+  "*Non-nil means only mail abbrevs should expand automatically.
+Other abbrevs expand only when you explicitly use `expand-abbrev'."
+  :type 'boolean
+  :group 'mail-abbrev)
+
 ;; originally defined in sendmail.el - used to be an alist, now is a table.
 (defvar mail-abbrevs nil
   "Word-abbrev table of mail address aliases.
@@ -162,6 +182,14 @@
 	    nil t)
   (abbrev-mode 1))
 
+(defun mail-abbrevs-enable ()
+  (add-hook 'mail-setup-hook 'mail-abbrevs-setup))
+
+(defun mail-abbrevs-disable ()
+  "Turn off use of the `mailabbrev' package."
+  (remove-hook 'mail-setup-hook 'mail-abbrevs-setup)
+  (abbrev-mode (if (default-value 'abbrev-mode) 1 -1)))
+
 ;;;###autoload
 (defun build-mail-abbrevs (&optional file recursivep)
   "Read mail aliases from personal mail alias file and set `mail-abbrevs'.
@@ -482,13 +510,20 @@
 	     (setq abbrev-start-location (point-max) ; This is the trick.
 		   abbrev-start-location-buffer (current-buffer)))
 
-	 ;; We're not in a mail header where mail aliases should
-	 ;; be expanded, then use the normal mail-mode abbrev table
-	 ;; (if any) and the normal mail-mode syntax table.
+	 (if (or (not mail-abbrevs-only)
+		 (eq this-command 'expand-abbrev))
+	     (progn
+	       ;; We're not in a mail header where mail aliases should
+	       ;; be expanded, then use the normal mail-mode abbrev table
+	       ;; (if any) and the normal mail-mode syntax table.
 
-	 (setq local-abbrev-table (and (boundp 'mail-mode-abbrev-table)
-				       mail-mode-abbrev-table))
-	 (set-syntax-table mail-mode-syntax-table))
+	       (setq local-abbrev-table (and (boundp 'mail-mode-abbrev-table)
+					     mail-mode-abbrev-table))
+	       (set-syntax-table mail-mode-syntax-table))
+	   ;; This is not a mail abbrev, and we should not expand it.
+	   ;; This kludge stops expand-abbrev from doing anything.
+	   (setq abbrev-start-location (point-max)
+		 abbrev-start-location-buffer (current-buffer))))
        ))
 
 ;;; utilities
@@ -573,4 +608,7 @@
 
 (provide 'mailabbrev)
 
+(if mail-abbrevs-mode
+    (mail-abbrevs-enable))
+
 ;;; mailabbrev.el ends here.