Mercurial > emacs
changeset 40383:cfc82f90a7d4
(mail-mode-syntax-table): Let it inherit from text-mode-syntax-table.
(mail-mode): Use define-derived-mode.
Fix ordering of alternatives in adaptive-fill-regexp.
(mail-mode-map): Don't rely on keymap's internal representation.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 27 Oct 2001 22:19:29 +0000 |
parents | 771aec14ad74 |
children | 25e6d4bb5f7f |
files | lisp/mail/sendmail.el |
diffstat | 1 files changed, 13 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/sendmail.el Sat Oct 27 22:07:59 2001 +0000 +++ b/lisp/mail/sendmail.el Sat Oct 27 22:19:29 2001 +0000 @@ -324,13 +324,12 @@ The value should be an expression to test whether the problem will actually occur.") -(defvar mail-mode-syntax-table nil - "Syntax table used while in mail mode.") - -(if (not mail-mode-syntax-table) - (progn - (setq mail-mode-syntax-table (copy-syntax-table text-mode-syntax-table)) - (modify-syntax-entry ?% ". " mail-mode-syntax-table))) +(defvar mail-mode-syntax-table + (let ((st (make-syntax-table))) + ;; define-derived-mode will make it inherit from text-mode-syntax-table. + (modify-syntax-entry ?% ". " st) + st) + "Syntax table used while in `mail-mode'.") (defvar mail-font-lock-keywords (eval-when-compile @@ -456,7 +455,7 @@ :options '(footnote-mode)) ;;;###autoload -(defun mail-mode () +(define-derived-mode mail-mode text-mode "Mail" "Major mode for editing mail to be sent. Like Text Mode but with these additional commands: \\[mail-send] mail-send (send the message) \\[mail-send-and-exit] mail-send-and-exit @@ -471,15 +470,8 @@ \\[mail-sent-via] mail-sent-via (add a Sent-via field for each To or CC). Turning on Mail mode runs the normal hooks `text-mode-hook' and `mail-mode-hook' (in that order)." - (interactive) - (kill-all-local-variables) (make-local-variable 'mail-reply-action) (make-local-variable 'mail-send-actions) - (set-syntax-table mail-mode-syntax-table) - (use-local-map mail-mode-map) - (setq local-abbrev-table text-mode-abbrev-table) - (setq major-mode 'mail-mode) - (setq mode-name "Mail") (setq buffer-offer-save t) (make-local-variable 'font-lock-defaults) (setq font-lock-defaults '(mail-font-lock-keywords t t)) @@ -494,12 +486,12 @@ (set (make-local-variable 'comment-start) mail-yank-prefix) (make-local-variable 'adaptive-fill-regexp) (setq adaptive-fill-regexp - (concat adaptive-fill-regexp - "\\|[ \t]*[-[:alnum:]]*>+[ \t]*")) + (concat "[ \t]*[-[:alnum:]]*>+[ \t]*\\|" + adaptive-fill-regexp)) (make-local-variable 'adaptive-fill-first-line-regexp) (setq adaptive-fill-first-line-regexp - (concat adaptive-fill-first-line-regexp - "\\|[ \t]*[-[:alnum:]]*>+[ \t]*")) + (concat "[ \t]*[-[:alnum:]]*>+[ \t]*\\|" + adaptive-fill-first-line-regexp)) ;; `-- ' precedes the signature. `-----' appears at the start of the ;; lines that delimit forwarded messages. ;; Lines containing just >= 3 dashes, perhaps after whitespace, @@ -509,8 +501,7 @@ "\\|[ \t]*[[:alnum:]]*>+[ \t]*$\\|[ \t]*$\\|" "-- $\\|---+$\\|" page-delimiter)) - (setq paragraph-separate paragraph-start) - (run-hooks 'text-mode-hook 'mail-mode-hook)) + (setq paragraph-separate paragraph-start)) (defun mail-header-end () @@ -597,7 +588,7 @@ (if mail-mode-map nil - (setq mail-mode-map (nconc (make-sparse-keymap) text-mode-map)) + (setq mail-mode-map (make-sparse-keymap)) (define-key mail-mode-map "\M-\t" 'mail-complete) (define-key mail-mode-map "\C-c?" 'describe-mode) (define-key mail-mode-map "\C-c\C-f\C-t" 'mail-to)