diff options
| author | Satyaki Das | 2005-10-23 22:34:34 +0000 |
|---|---|---|
| committer | Satyaki Das | 2005-10-23 22:34:34 +0000 |
| commit | 1dd9796d2b9359b7a8138a3ff95d6afed63e15c1 (patch) | |
| tree | 7a149e64ae332bde0ddf84118eaa6d545a2d8737 | |
| parent | 3a20e510a35d7a793bbd8202558be734d577e435 (diff) | |
| download | emacs-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/ChangeLog | 28 | ||||
| -rw-r--r-- | lisp/mh-e/mh-comp.el | 6 | ||||
| -rw-r--r-- | lisp/mh-e/mh-customize.el | 57 | ||||
| -rw-r--r-- | lisp/mh-e/mh-e.el | 8 | ||||
| -rw-r--r-- | lisp/mh-e/mh-identity.el | 9 |
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 @@ | |||
| 1 | 2005-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 | |||
| 1 | 2005-10-23 Bill Wohler <wohler@newt.com> | 29 | 2005-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. |
| 1678 | DEFAULTS is the list of buttons that are present by default. It is a list of | 1686 | DEFAULTS 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 | |||
| 1560 | messages in that region. | 1562 | messages 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'. | ||
| 123 | Check 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. |
| 123 | The field name is downcased. If the FIELD begins with the character | 130 | The 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 |
| 126 | header field." | 133 | header 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)) |