aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSatyaki Das2005-10-23 22:34:34 +0000
committerSatyaki Das2005-10-23 22:34:34 +0000
commit1dd9796d2b9359b7a8138a3ff95d6afed63e15c1 (patch)
tree7a149e64ae332bde0ddf84118eaa6d545a2d8737
parent3a20e510a35d7a793bbd8202558be734d577e435 (diff)
downloademacs-1dd9796d2b9359b7a8138a3ff95d6afed63e15c1.tar.gz
emacs-1dd9796d2b9359b7a8138a3ff95d6afed63e15c1.zip
* mh-identity.el (mh-assoc-ignore-case): New macro that uses
assoc-string (if the function is available) and falls back on assoc-ignore-case if assoc-string is not found. (mh-identity-field-handler): Use mh-assoc-ignore-case since assoc-ignore-case is a obsolete function in Emacs 22. * mh-e.el (mh-folder-buttons-init-flag): New variable that keeps track of whether the tool-bar in mh-folder-mode has been initialized yet. (mh-folder-mode): Initialize the tool-bar for folders the first time we get into mh-letter-mode. * mh-customize.el (mh-buffer-exists-p): New function which tests presence of buffers of a given mode. (mh-tool-bar-define): New functions mh-tool-bar-folder-buttons-init and mh-tool-bar-letter-buttons-init are defined. These functions are used to create the tool-bar from the corresponding customizable variables. * mh-comp.el (mh-letter-buttons-init-flag): New variable that keeps track of whether the tool-bar in mh-letter-mode has been initialized yet. (mh-letter-mode): Initialize the tool-bar for drafts the first time we get into mh-letter-mode.
-rw-r--r--lisp/mh-e/ChangeLog28
-rw-r--r--lisp/mh-e/mh-comp.el6
-rw-r--r--lisp/mh-e/mh-customize.el57
-rw-r--r--lisp/mh-e/mh-e.el8
-rw-r--r--lisp/mh-e/mh-identity.el9
5 files changed, 85 insertions, 23 deletions
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index b3434f6d001..bf8b6be9437 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,31 @@
12005-10-23 Satyaki Das <satyaki@theforce.stanford.edu>
2
3 * mh-identity.el (mh-assoc-ignore-case): New macro that uses
4 assoc-string (if the function is available) and falls back on
5 assoc-ignore-case if assoc-string is not found.
6 (mh-identity-field-handler): Use mh-assoc-ignore-case since
7 assoc-ignore-case is a obsolete function in Emacs 22.
8
9 * mh-e.el (mh-folder-buttons-init-flag): New variable that keeps
10 track of whether the tool-bar in mh-folder-mode has been
11 initialized yet.
12 (mh-folder-mode): Initialize the tool-bar for folders the first
13 time we get into mh-letter-mode.
14
15 * mh-customize.el (mh-buffer-exists-p): New function which tests
16 presence of buffers of a given mode.
17 (mh-tool-bar-define): New functions
18 mh-tool-bar-folder-buttons-init and
19 mh-tool-bar-letter-buttons-init are defined. These functions are
20 used to create the tool-bar from the corresponding customizable
21 variables.
22
23 * mh-comp.el (mh-letter-buttons-init-flag): New variable that
24 keeps track of whether the tool-bar in mh-letter-mode has been
25 initialized yet.
26 (mh-letter-mode): Initialize the tool-bar for drafts the first
27 time we get into mh-letter-mode.
28
12005-10-23 Bill Wohler <wohler@newt.com> 292005-10-23 Bill Wohler <wohler@newt.com>
2 30
3 * mh-comp.el (mh-letter-menu): Rename 31 * mh-comp.el (mh-letter-menu): Rename
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index 6d26fae36a5..be39bd4c528 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -871,6 +871,8 @@ work better in MH-Letter mode."
871 (defvar tool-bar-mode) 871 (defvar tool-bar-mode)
872 (defvar tool-bar-map)) 872 (defvar tool-bar-map))
873 873
874(defvar mh-letter-buttons-init-flag nil)
875
874;;;###autoload 876;;;###autoload
875(define-derived-mode mh-letter-mode text-mode "MH-Letter" 877(define-derived-mode mh-letter-mode text-mode "MH-Letter"
876 "Mode for composing letters in MH-E.\\<mh-letter-mode-map> 878 "Mode for composing letters in MH-E.\\<mh-letter-mode-map>
@@ -897,6 +899,10 @@ When a message is composed, the hooks `text-mode-hook' and
897 (make-local-variable 'mh-previous-window-config) 899 (make-local-variable 'mh-previous-window-config)
898 (make-local-variable 'mh-sent-from-folder) 900 (make-local-variable 'mh-sent-from-folder)
899 (make-local-variable 'mh-sent-from-msg) 901 (make-local-variable 'mh-sent-from-msg)
902 (mh-do-in-gnu-emacs
903 (unless mh-letter-buttons-init-flag
904 (mh-tool-bar-letter-buttons-init)
905 (setq mh-letter-buttons-init-flag t)))
900 ;; Set the local value of mh-mail-header-separator according to what is 906 ;; Set the local value of mh-mail-header-separator according to what is
901 ;; present in the buffer... 907 ;; present in the buffer...
902 (set (make-local-variable 'mh-mail-header-separator) 908 (set (make-local-variable 'mh-mail-header-separator)
diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el
index 29a6c62e753..2255bdad2d6 100644
--- a/lisp/mh-e/mh-customize.el
+++ b/lisp/mh-e/mh-customize.el
@@ -1673,6 +1673,14 @@ and the default-toolbar."
1673 (const :tag "Don't use a toolbar" nil)) 1673 (const :tag "Don't use a toolbar" nil))
1674 :group 'mh-toolbar)) 1674 :group 'mh-toolbar))
1675 1675
1676(defun mh-buffer-exists-p (mode)
1677 "Test whether a buffer with major mode MODE is present."
1678 (loop for buf in (buffer-list)
1679 when (save-excursion
1680 (set-buffer buf)
1681 (eq major-mode mode))
1682 return t))
1683
1676(defmacro mh-tool-bar-define (defaults &rest buttons) 1684(defmacro mh-tool-bar-define (defaults &rest buttons)
1677 "Define a tool bar for MH-E. 1685 "Define a tool bar for MH-E.
1678DEFAULTS is the list of buttons that are present by default. It is a list of 1686DEFAULTS is the list of buttons that are present by default. It is a list of
@@ -1804,33 +1812,42 @@ where,
1804 (defvar mh-letter-tool-bar-map nil) 1812 (defvar mh-letter-tool-bar-map nil)
1805 ;; GNU Emacs tool bar specific code 1813 ;; GNU Emacs tool bar specific code
1806 (mh-do-in-gnu-emacs 1814 (mh-do-in-gnu-emacs
1815 ;; Tool bar initialization functions
1816 (defun mh-tool-bar-folder-buttons-init ()
1817 (when (mh-buffer-exists-p 'mh-folder-mode)
1818 (mh-image-load-path)
1819 (setq mh-folder-tool-bar-map
1820 (let ((tool-bar-map (make-sparse-keymap)))
1821 ,@(nreverse folder-button-setter)
1822 tool-bar-map))
1823 (setq mh-show-tool-bar-map
1824 (let ((tool-bar-map (make-sparse-keymap)))
1825 ,@(nreverse show-button-setter)
1826 tool-bar-map))
1827 (setq mh-show-seq-tool-bar-map
1828 (let ((tool-bar-map (copy-keymap mh-show-tool-bar-map)))
1829 ,@(nreverse show-seq-button-setter)
1830 tool-bar-map))
1831 (setq mh-folder-seq-tool-bar-map
1832 (let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map)))
1833 ,@(nreverse sequence-button-setter)
1834 tool-bar-map))))
1835 (defun mh-tool-bar-letter-buttons-init ()
1836 (when (mh-buffer-exists-p 'mh-letter-mode)
1837 (mh-image-load-path)
1838 (setq mh-letter-tool-bar-map
1839 (let ((tool-bar-map (make-sparse-keymap)))
1840 ,@(nreverse letter-button-setter)
1841 tool-bar-map))))
1807 ;; Custom setter functions 1842 ;; Custom setter functions
1808 (defun mh-tool-bar-folder-buttons-set (symbol value) 1843 (defun mh-tool-bar-folder-buttons-set (symbol value)
1809 "Construct toolbar for `mh-folder-mode' and `mh-show-mode'." 1844 "Construct toolbar for `mh-folder-mode' and `mh-show-mode'."
1810 (set-default symbol value) 1845 (set-default symbol value)
1811 (setq mh-folder-tool-bar-map 1846 (mh-tool-bar-folder-buttons-init))
1812 (let ((tool-bar-map (make-sparse-keymap)))
1813 ,@(nreverse folder-button-setter)
1814 tool-bar-map))
1815 (setq mh-show-tool-bar-map
1816 (let ((tool-bar-map (make-sparse-keymap)))
1817 ,@(nreverse show-button-setter)
1818 tool-bar-map))
1819 (setq mh-show-seq-tool-bar-map
1820 (let ((tool-bar-map (copy-keymap mh-show-tool-bar-map)))
1821 ,@(nreverse show-seq-button-setter)
1822 tool-bar-map))
1823 (setq mh-folder-seq-tool-bar-map
1824 (let ((tool-bar-map (copy-keymap mh-folder-tool-bar-map)))
1825 ,@(nreverse sequence-button-setter)
1826 tool-bar-map)))
1827 (defun mh-tool-bar-letter-buttons-set (symbol value) 1847 (defun mh-tool-bar-letter-buttons-set (symbol value)
1828 "Construct toolbar for `mh-letter-mode'." 1848 "Construct toolbar for `mh-letter-mode'."
1829 (set-default symbol value) 1849 (set-default symbol value)
1830 (setq mh-letter-tool-bar-map 1850 (mh-tool-bar-letter-buttons-init)))
1831 (let ((tool-bar-map (make-sparse-keymap)))
1832 ,@(nreverse letter-button-setter)
1833 tool-bar-map))))
1834 ;; XEmacs specific code 1851 ;; XEmacs specific code
1835 (mh-do-in-xemacs 1852 (mh-do-in-xemacs
1836 (defvar mh-toolbar-folder-vector-map 1853 (defvar mh-toolbar-folder-vector-map
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index c0b57ee56ca..283499b2c66 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -1507,6 +1507,8 @@ is used in previous versions and XEmacs."
1507 (not (member 'mh-folder-mode which-func-modes))) 1507 (not (member 'mh-folder-mode which-func-modes)))
1508 (push 'mh-folder-mode which-func-modes)) 1508 (push 'mh-folder-mode which-func-modes))
1509 1509
1510(defvar mh-folder-buttons-init-flag nil)
1511
1510;; Autoload cookie needed by desktop.el 1512;; Autoload cookie needed by desktop.el
1511;;;###autoload 1513;;;###autoload
1512(define-derived-mode mh-folder-mode fundamental-mode "MH-Folder" 1514(define-derived-mode mh-folder-mode fundamental-mode "MH-Folder"
@@ -1560,8 +1562,10 @@ MH-Folder buffer, then the MH-E command will perform the operation on all
1560messages in that region. 1562messages in that region.
1561 1563
1562\\{mh-folder-mode-map}" 1564\\{mh-folder-mode-map}"
1563 1565 (mh-do-in-gnu-emacs
1564 (mh-image-load-path) 1566 (unless mh-folder-buttons-init-flag
1567 (mh-tool-bar-folder-buttons-init)
1568 (setq mh-folder-buttons-init-flag t)))
1565 (make-local-variable 'font-lock-defaults) 1569 (make-local-variable 'font-lock-defaults)
1566 (setq font-lock-defaults '(mh-folder-font-lock-keywords t)) 1570 (setq font-lock-defaults '(mh-folder-font-lock-keywords t))
1567 (make-local-variable 'desktop-save-buffer) 1571 (make-local-variable 'desktop-save-buffer)
diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el
index c3f34ae75b2..1e7c8035734 100644
--- a/lisp/mh-e/mh-identity.el
+++ b/lisp/mh-e/mh-identity.el
@@ -118,13 +118,20 @@ Return t if anything is deleted."
118(defvar mh-identity-signature-end nil 118(defvar mh-identity-signature-end nil
119 "Marker for the end of a signature inserted by `mh-insert-identity'.") 119 "Marker for the end of a signature inserted by `mh-insert-identity'.")
120 120
121(defmacro mh-assoc-ignore-case (key alist)
122 "Compatibility macro for emacs versions that lack `assoc-string'.
123Check if KEY is present in ALIST while ignoring case to do the comparison."
124 (if (fboundp 'assoc-string)
125 `(assoc-string ,key ,alist t)
126 `(assoc-ignore-case ,key ,alist)))
127
121(defun mh-identity-field-handler (field) 128(defun mh-identity-field-handler (field)
122 "Return the handler for header FIELD or nil if none set. 129 "Return the handler for header FIELD or nil if none set.
123The field name is downcased. If the FIELD begins with the character 130The field name is downcased. If the FIELD begins with the character
124`:', then it must have a special handler defined in 131`:', then it must have a special handler defined in
125`mh-identity-handlers', else return an error since it is not a valid 132`mh-identity-handlers', else return an error since it is not a valid
126header field." 133header field."
127 (or (cdr (assoc-ignore-case field mh-identity-handlers)) 134 (or (cdr (mh-assoc-ignore-case field mh-identity-handlers))
128 (and (eq (aref field 0) ?:) 135 (and (eq (aref field 0) ?:)
129 (error "Field %s - unknown mh-identity-handler" field)) 136 (error "Field %s - unknown mh-identity-handler" field))
130 (cdr (assoc ":default" mh-identity-handlers)) 137 (cdr (assoc ":default" mh-identity-handlers))