1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

(rmail-view-buffer): Make buffer-local.

(rmail-select-summary, rmail-perm-variables, rmail-redecode-body)
(rmail-undelete-previous-message, rmail-mark-message)
(rmail-speedbar-buttons): Use with-current-buffer.
(rmail-mode-map): Move initialization into declaration.
(rmail-swap-buffers, rmail-unfontify-buffer-function)
(rmail-fontify-message): Use restore-buffer-modified-p.
(rmail-expunge-and-save): Don't swap buffer.
(rmail-get-header, rmail-set-header, rmail-set-attribute)
(rmail-apply-in-message): Swap save-excursion and save-restriction.
This commit is contained in:
Stefan Monnier 2009-02-01 03:39:37 +00:00
parent 73d7bcb918
commit 2dc00ad0c3
2 changed files with 179 additions and 173 deletions

View File

@ -1,5 +1,16 @@
2009-02-01 Stefan Monnier <monnier@iro.umontreal.ca>
* mail/rmail.el (rmail-view-buffer): Make buffer-local.
(rmail-select-summary, rmail-perm-variables, rmail-redecode-body)
(rmail-undelete-previous-message, rmail-mark-message)
(rmail-speedbar-buttons): Use with-current-buffer.
(rmail-mode-map): Move initialization into declaration.
(rmail-swap-buffers, rmail-unfontify-buffer-function)
(rmail-fontify-message): Use restore-buffer-modified-p.
(rmail-expunge-and-save): Don't swap buffer.
(rmail-get-header, rmail-set-header, rmail-set-attribute)
(rmail-apply-in-message): Swap save-excursion and save-restriction.
* mail/rmailsort.el (rmail-sort-messages): Use car-less-than-car
if possible.

View File

@ -563,6 +563,7 @@ by substituting the new message number into the existing list.")
(defvar rmail-view-buffer nil
"Buffer which holds RMAIL message for MIME displaying.")
(make-variable-buffer-local 'rmail-view-buffer)
(put 'rmail-view-buffer 'permanent-local t)
;; `Sticky' default variables.
@ -675,10 +676,6 @@ the variable `rmail-mime-feature'.")
The first parenthesized expression should match the MIME-charset name.")
;;; Regexp matching the delimiter of messages in UNIX mail format
;;; (UNIX From lines), minus the initial ^. Note that if you change
;;; this expression, you must change the code in rmail-nuke-pinhead-header
;;; that knows the exact ordering of the \\( \\) subexpressions.
(defvar rmail-unix-mail-delimiter
(let ((time-zone-regexp
(concat "\\([A-Z]?[A-Z]?[A-Z][A-Z]\\( DST\\)?"
@ -729,7 +726,10 @@ The first parenthesized expression should match the MIME-charset name.")
"\\(remote from .*\\)?"
"\n"))
nil)
"Regexp matching the delimiter of messages in UNIX mail format
\(UNIX From lines), minus the initial ^. Note that if you change
this expression, you must change the code in rmail-nuke-pinhead-header
that knows the exact ordering of the \\( \\) subexpressions.")
(defvar rmail-font-lock-keywords
;; These are all matched case-insensitively.
@ -774,8 +774,7 @@ The first parenthesized expression should match the MIME-charset name.")
(let ((rmail-total-messages total))
,@body))
(select-window window))))
(save-excursion
(set-buffer rmail-summary-buffer)
(with-current-buffer rmail-summary-buffer
(let ((rmail-total-messages total))
,@body)))
(rmail-maybe-display-summary)))
@ -843,15 +842,15 @@ If `rmail-display-summary' is non-nil, make a summary for this RMAIL file."
(switch-to-buffer
(let ((enable-local-variables nil))
(find-file-noselect file-name))))
;; Insure that the collection and view buffers are in sync and
;; insure that a message is not being edited.
;; Ensure that the collection and view buffers are in sync and
;; ensure that a message is not being edited.
(if (eq major-mode 'rmail-mode)
(rmail-swap-buffers-maybe))
(if (eq major-mode 'rmail-edit-mode)
(error "Exit Rmail Edit mode before getting new mail"))
(or (and existed (> (buffer-size) 0))
(setq run-mail-hook t))
;; Insure that the Rmail file is in mbox format, the buffer is in
;; Ensure that the Rmail file is in mbox format, the buffer is in
;; Rmail mode and has been scanned to find all the messages
;; (setting the global message variables in the process).
(rmail-convert-file-maybe)
@ -942,183 +941,183 @@ The buffer is expected to be narrowed to just the header of the message."
;;; Set up Rmail mode keymaps
(defvar rmail-mode-map nil)
(if rmail-mode-map
nil
(setq rmail-mode-map (make-keymap))
(suppress-keymap rmail-mode-map)
(define-key rmail-mode-map "a" 'rmail-add-label)
(define-key rmail-mode-map "b" 'rmail-bury)
(define-key rmail-mode-map "c" 'rmail-continue)
(define-key rmail-mode-map "d" 'rmail-delete-forward)
(define-key rmail-mode-map "\C-d" 'rmail-delete-backward)
(define-key rmail-mode-map "e" 'rmail-edit-current-message)
(define-key rmail-mode-map "f" 'rmail-forward)
(define-key rmail-mode-map "g" 'rmail-get-new-mail)
(define-key rmail-mode-map "h" 'rmail-summary)
(define-key rmail-mode-map "i" 'rmail-input)
(define-key rmail-mode-map "j" 'rmail-show-message-maybe)
(define-key rmail-mode-map "k" 'rmail-kill-label)
(define-key rmail-mode-map "l" 'rmail-summary-by-labels)
(define-key rmail-mode-map "\e\C-h" 'rmail-summary)
(define-key rmail-mode-map "\e\C-l" 'rmail-summary-by-labels)
(define-key rmail-mode-map "\e\C-r" 'rmail-summary-by-recipients)
(define-key rmail-mode-map "\e\C-s" 'rmail-summary-by-regexp)
(define-key rmail-mode-map "\e\C-t" 'rmail-summary-by-topic)
(define-key rmail-mode-map "m" 'rmail-mail)
(define-key rmail-mode-map "\em" 'rmail-retry-failure)
(define-key rmail-mode-map "n" 'rmail-next-undeleted-message)
(define-key rmail-mode-map "\en" 'rmail-next-message)
(define-key rmail-mode-map "\e\C-n" 'rmail-next-labeled-message)
(define-key rmail-mode-map "o" 'rmail-output)
(define-key rmail-mode-map "\C-o" 'rmail-output-as-seen)
(define-key rmail-mode-map "p" 'rmail-previous-undeleted-message)
(define-key rmail-mode-map "\ep" 'rmail-previous-message)
(define-key rmail-mode-map "\e\C-p" 'rmail-previous-labeled-message)
(define-key rmail-mode-map "q" 'rmail-quit)
(define-key rmail-mode-map "r" 'rmail-reply)
;; I find I can't live without the default M-r command -- rms.
;; (define-key rmail-mode-map "\er" 'rmail-search-backwards)
(define-key rmail-mode-map "s" 'rmail-expunge-and-save)
(define-key rmail-mode-map "\es" 'rmail-search)
(define-key rmail-mode-map "t" 'rmail-toggle-header)
(define-key rmail-mode-map "u" 'rmail-undelete-previous-message)
(define-key rmail-mode-map "w" 'rmail-output-body-to-file)
(define-key rmail-mode-map "\C-c\C-w" 'rmail-widen)
(define-key rmail-mode-map "x" 'rmail-expunge)
(define-key rmail-mode-map "." 'rmail-beginning-of-message)
(define-key rmail-mode-map "/" 'rmail-end-of-message)
(define-key rmail-mode-map "<" 'rmail-first-message)
(define-key rmail-mode-map ">" 'rmail-last-message)
(define-key rmail-mode-map " " 'scroll-up)
(define-key rmail-mode-map "\177" 'scroll-down)
(define-key rmail-mode-map "?" 'describe-mode)
(define-key rmail-mode-map "\C-c\C-s\C-d" 'rmail-sort-by-date)
(define-key rmail-mode-map "\C-c\C-s\C-s" 'rmail-sort-by-subject)
(define-key rmail-mode-map "\C-c\C-s\C-a" 'rmail-sort-by-author)
(define-key rmail-mode-map "\C-c\C-s\C-r" 'rmail-sort-by-recipient)
(define-key rmail-mode-map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent)
(define-key rmail-mode-map "\C-c\C-s\C-l" 'rmail-sort-by-lines)
(define-key rmail-mode-map "\C-c\C-s\C-k" 'rmail-sort-by-labels)
(define-key rmail-mode-map "\C-c\C-n" 'rmail-next-same-subject)
(define-key rmail-mode-map "\C-c\C-p" 'rmail-previous-same-subject)
)
(defvar rmail-mode-map
(let ((map (make-keymap)))
(suppress-keymap map)
(define-key map "a" 'rmail-add-label)
(define-key map "b" 'rmail-bury)
(define-key map "c" 'rmail-continue)
(define-key map "d" 'rmail-delete-forward)
(define-key map "\C-d" 'rmail-delete-backward)
(define-key map "e" 'rmail-edit-current-message)
(define-key map "f" 'rmail-forward)
(define-key map "g" 'rmail-get-new-mail)
(define-key map "h" 'rmail-summary)
(define-key map "i" 'rmail-input)
(define-key map "j" 'rmail-show-message-maybe)
(define-key map "k" 'rmail-kill-label)
(define-key map "l" 'rmail-summary-by-labels)
(define-key map "\e\C-h" 'rmail-summary)
(define-key map "\e\C-l" 'rmail-summary-by-labels)
(define-key map "\e\C-r" 'rmail-summary-by-recipients)
(define-key map "\e\C-s" 'rmail-summary-by-regexp)
(define-key map "\e\C-t" 'rmail-summary-by-topic)
(define-key map "m" 'rmail-mail)
(define-key map "\em" 'rmail-retry-failure)
(define-key map "n" 'rmail-next-undeleted-message)
(define-key map "\en" 'rmail-next-message)
(define-key map "\e\C-n" 'rmail-next-labeled-message)
(define-key map "o" 'rmail-output)
(define-key map "\C-o" 'rmail-output-as-seen)
(define-key map "p" 'rmail-previous-undeleted-message)
(define-key map "\ep" 'rmail-previous-message)
(define-key map "\e\C-p" 'rmail-previous-labeled-message)
(define-key map "q" 'rmail-quit)
(define-key map "r" 'rmail-reply)
;; I find I can't live without the default M-r command -- rms.
;; (define-key rmail-mode-map "\er" 'rmail-search-backwards)
(define-key map "s" 'rmail-expunge-and-save)
(define-key map "\es" 'rmail-search)
(define-key map "t" 'rmail-toggle-header)
(define-key map "u" 'rmail-undelete-previous-message)
(define-key map "w" 'rmail-output-body-to-file)
(define-key map "\C-c\C-w" 'rmail-widen)
(define-key map "x" 'rmail-expunge)
(define-key map "." 'rmail-beginning-of-message)
(define-key map "/" 'rmail-end-of-message)
(define-key map "<" 'rmail-first-message)
(define-key map ">" 'rmail-last-message)
(define-key map " " 'scroll-up)
(define-key map "\177" 'scroll-down)
(define-key map "?" 'describe-mode)
(define-key map "\C-c\C-s\C-d" 'rmail-sort-by-date)
(define-key map "\C-c\C-s\C-s" 'rmail-sort-by-subject)
(define-key map "\C-c\C-s\C-a" 'rmail-sort-by-author)
(define-key map "\C-c\C-s\C-r" 'rmail-sort-by-recipient)
(define-key map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent)
(define-key map "\C-c\C-s\C-l" 'rmail-sort-by-lines)
(define-key map "\C-c\C-s\C-k" 'rmail-sort-by-labels)
(define-key map "\C-c\C-n" 'rmail-next-same-subject)
(define-key map "\C-c\C-p" 'rmail-previous-same-subject)
(define-key rmail-mode-map [menu-bar] (make-sparse-keymap))
(define-key map [menu-bar] (make-sparse-keymap))
(define-key rmail-mode-map [menu-bar classify]
(cons "Classify" (make-sparse-keymap "Classify")))
(define-key map [menu-bar classify]
(cons "Classify" (make-sparse-keymap "Classify")))
(define-key rmail-mode-map [menu-bar classify input-menu]
nil)
(define-key map [menu-bar classify input-menu]
nil)
(define-key rmail-mode-map [menu-bar classify output-menu]
nil)
(define-key map [menu-bar classify output-menu]
nil)
(define-key rmail-mode-map [menu-bar classify output-body]
'("Output body to file..." . rmail-output-body-to-file))
(define-key map [menu-bar classify output-body]
'("Output body to file..." . rmail-output-body-to-file))
(define-key rmail-mode-map [menu-bar classify output-inbox]
'("Output..." . rmail-output))
(define-key map [menu-bar classify output-inbox]
'("Output..." . rmail-output))
(define-key rmail-mode-map [menu-bar classify output]
'("Output as seen..." . rmail-output-as-seen))
(define-key map [menu-bar classify output]
'("Output as seen..." . rmail-output-as-seen))
(define-key rmail-mode-map [menu-bar classify kill-label]
'("Kill Label..." . rmail-kill-label))
(define-key map [menu-bar classify kill-label]
'("Kill Label..." . rmail-kill-label))
(define-key rmail-mode-map [menu-bar classify add-label]
'("Add Label..." . rmail-add-label))
(define-key map [menu-bar classify add-label]
'("Add Label..." . rmail-add-label))
(define-key rmail-mode-map [menu-bar summary]
(cons "Summary" (make-sparse-keymap "Summary")))
(define-key map [menu-bar summary]
(cons "Summary" (make-sparse-keymap "Summary")))
(define-key rmail-mode-map [menu-bar summary senders]
'("By Senders..." . rmail-summary-by-senders))
(define-key map [menu-bar summary senders]
'("By Senders..." . rmail-summary-by-senders))
(define-key rmail-mode-map [menu-bar summary labels]
'("By Labels..." . rmail-summary-by-labels))
(define-key map [menu-bar summary labels]
'("By Labels..." . rmail-summary-by-labels))
(define-key rmail-mode-map [menu-bar summary recipients]
'("By Recipients..." . rmail-summary-by-recipients))
(define-key map [menu-bar summary recipients]
'("By Recipients..." . rmail-summary-by-recipients))
(define-key rmail-mode-map [menu-bar summary topic]
'("By Topic..." . rmail-summary-by-topic))
(define-key map [menu-bar summary topic]
'("By Topic..." . rmail-summary-by-topic))
(define-key rmail-mode-map [menu-bar summary regexp]
'("By Regexp..." . rmail-summary-by-regexp))
(define-key map [menu-bar summary regexp]
'("By Regexp..." . rmail-summary-by-regexp))
(define-key rmail-mode-map [menu-bar summary all]
'("All" . rmail-summary))
(define-key map [menu-bar summary all]
'("All" . rmail-summary))
(define-key rmail-mode-map [menu-bar mail]
(cons "Mail" (make-sparse-keymap "Mail")))
(define-key map [menu-bar mail]
(cons "Mail" (make-sparse-keymap "Mail")))
(define-key rmail-mode-map [menu-bar mail rmail-get-new-mail]
'("Get New Mail" . rmail-get-new-mail))
(define-key map [menu-bar mail rmail-get-new-mail]
'("Get New Mail" . rmail-get-new-mail))
(define-key rmail-mode-map [menu-bar mail lambda]
'("----"))
(define-key map [menu-bar mail lambda]
'("----"))
(define-key rmail-mode-map [menu-bar mail continue]
'("Continue" . rmail-continue))
(define-key map [menu-bar mail continue]
'("Continue" . rmail-continue))
(define-key rmail-mode-map [menu-bar mail resend]
'("Re-send..." . rmail-resend))
(define-key map [menu-bar mail resend]
'("Re-send..." . rmail-resend))
(define-key rmail-mode-map [menu-bar mail forward]
'("Forward" . rmail-forward))
(define-key map [menu-bar mail forward]
'("Forward" . rmail-forward))
(define-key rmail-mode-map [menu-bar mail retry]
'("Retry" . rmail-retry-failure))
(define-key map [menu-bar mail retry]
'("Retry" . rmail-retry-failure))
(define-key rmail-mode-map [menu-bar mail reply]
'("Reply" . rmail-reply))
(define-key map [menu-bar mail reply]
'("Reply" . rmail-reply))
(define-key rmail-mode-map [menu-bar mail mail]
'("Mail" . rmail-mail))
(define-key map [menu-bar mail mail]
'("Mail" . rmail-mail))
(define-key rmail-mode-map [menu-bar delete]
(cons "Delete" (make-sparse-keymap "Delete")))
(define-key map [menu-bar delete]
(cons "Delete" (make-sparse-keymap "Delete")))
(define-key rmail-mode-map [menu-bar delete expunge/save]
'("Expunge/Save" . rmail-expunge-and-save))
(define-key map [menu-bar delete expunge/save]
'("Expunge/Save" . rmail-expunge-and-save))
(define-key rmail-mode-map [menu-bar delete expunge]
'("Expunge" . rmail-expunge))
(define-key map [menu-bar delete expunge]
'("Expunge" . rmail-expunge))
(define-key rmail-mode-map [menu-bar delete undelete]
'("Undelete" . rmail-undelete-previous-message))
(define-key map [menu-bar delete undelete]
'("Undelete" . rmail-undelete-previous-message))
(define-key rmail-mode-map [menu-bar delete delete]
'("Delete" . rmail-delete-forward))
(define-key map [menu-bar delete delete]
'("Delete" . rmail-delete-forward))
(define-key rmail-mode-map [menu-bar move]
(cons "Move" (make-sparse-keymap "Move")))
(define-key map [menu-bar move]
(cons "Move" (make-sparse-keymap "Move")))
(define-key rmail-mode-map [menu-bar move search-back]
'("Search Back..." . rmail-search-backwards))
(define-key map [menu-bar move search-back]
'("Search Back..." . rmail-search-backwards))
(define-key rmail-mode-map [menu-bar move search]
'("Search..." . rmail-search))
(define-key map [menu-bar move search]
'("Search..." . rmail-search))
(define-key rmail-mode-map [menu-bar move previous]
'("Previous Nondeleted" . rmail-previous-undeleted-message))
(define-key map [menu-bar move previous]
'("Previous Nondeleted" . rmail-previous-undeleted-message))
(define-key rmail-mode-map [menu-bar move next]
'("Next Nondeleted" . rmail-next-undeleted-message))
(define-key map [menu-bar move next]
'("Next Nondeleted" . rmail-next-undeleted-message))
(define-key rmail-mode-map [menu-bar move last]
'("Last" . rmail-last-message))
(define-key map [menu-bar move last]
'("Last" . rmail-last-message))
(define-key rmail-mode-map [menu-bar move first]
'("First" . rmail-first-message))
(define-key map [menu-bar move first]
'("First" . rmail-first-message))
(define-key rmail-mode-map [menu-bar move previous]
'("Previous" . rmail-previous-message))
(define-key map [menu-bar move previous]
'("Previous" . rmail-previous-message))
(define-key rmail-mode-map [menu-bar move next]
'("Next" . rmail-next-message))
(define-key map [menu-bar move next]
'("Next" . rmail-next-message))
map))
;; Rmail toolbar
(defvar rmail-tool-bar-map
@ -1271,7 +1270,7 @@ sets the current buffer's `buffer-file-coding-system' to that of
buffer-file-coding-system)))
(buffer-swap-text rmail-view-buffer)
(setq buffer-file-coding-system coding)
(set-buffer-modified-p modp)))
(restore-buffer-modified-p modp)))
(defun rmail-buffers-swapped-p ()
"Return non-nil if the message collection is in `rmail-view-buffer'."
@ -1303,10 +1302,7 @@ If so restore the actual mbox message collection."
(make-local-variable 'rmail-buffer)
(setq rmail-buffer (current-buffer))
(set-buffer-multibyte nil)
(make-local-variable 'rmail-view-buffer)
(save-excursion
(setq rmail-view-buffer (rmail-generate-viewer-buffer))
(set-buffer rmail-view-buffer)
(with-current-buffer (setq rmail-view-buffer (rmail-generate-viewer-buffer))
(setq buffer-undo-list t)
(set-buffer-multibyte t)
;; Force C-x C-s write Unix EOLs.
@ -1391,7 +1387,8 @@ If so restore the actual mbox message collection."
(interactive)
(set-buffer rmail-buffer)
(rmail-expunge t)
(rmail-swap-buffers-maybe)
;; No need to swap buffers: rmail-write-region-annotate takes care of it.
;; (rmail-swap-buffers-maybe)
(save-buffer)
(if (rmail-summary-exists)
(rmail-select-summary (set-buffer-modified-p nil)))
@ -1944,7 +1941,7 @@ new messages. Return the number of new messages."
limit)
;; Detect an empty inbox file.
(unless (= start (point-max))
;; Scan the new messages to establish a count and to insure that
;; Scan the new messages to establish a count and to ensure that
;; an attribute header is present.
(while (looking-at "From ")
;; Determine if a new attribute header needs to be added to
@ -1977,9 +1974,9 @@ If MSGNUM is nil, use the current message."
(save-excursion
;; ... so it is ok to go to a different buffer.
(if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer))
(save-excursion
(save-restriction
(widen)
(save-excursion
(goto-char msgbeg)
(setq end (search-forward "\n\n" nil t))
(if end
@ -2001,9 +1998,9 @@ If MSGNUM is nil, use the current message."
(save-excursion
;; ... so it is ok to go to a different buffer.
(if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer))
(save-excursion
(save-restriction
(widen)
(save-excursion
(goto-char msgbeg)
(setq end (search-forward "\n\n" nil t))
(if end (setq end (1- end)))
@ -2117,9 +2114,9 @@ change; nil means current message."
(save-excursion
;; ... so it is ok to go to a different buffer.
(if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer))
(save-excursion
(save-restriction
(widen)
(save-excursion
;; Determine if the current state is the desired state.
(goto-char msgbeg)
(save-excursion
@ -2204,13 +2201,12 @@ If MSGNUM is nil, use the current message."
(save-excursion
;; ... so it is ok to go to a different buffer.
(if (rmail-buffers-swapped-p) (set-buffer rmail-view-buffer))
(save-excursion
(save-restriction
(widen)
(save-excursion
(goto-char msgbeg)
(save-restriction
(narrow-to-region msgbeg msgend)
(apply function args)))))))))
(apply function args))))))))
(defun rmail-widen-to-current-msgbeg (function)
"Call FUNCTION with point at start of internal data of current message.
@ -2462,6 +2458,7 @@ N defaults to the current message."
(interactive "p")
(or (eq major-mode 'rmail-mode)
(switch-to-buffer rmail-buffer))
;; FIXME: Why do we swap the raw data back in?
(rmail-swap-buffers-maybe)
(rmail-maybe-set-message-counters)
(widen)
@ -2675,8 +2672,7 @@ to be used to fix messages encoded with 8-bit encodings, such as
iso-8859, koi8-r, etc."
(interactive "zCoding system for re-decoding this message: ")
(when (not rmail-enable-mime)
(save-excursion
(set-buffer rmail-buffer)
(with-current-buffer rmail-buffer
(rmail-swap-buffers-maybe)
(save-restriction
(widen)
@ -3109,8 +3105,7 @@ If N is negative, go forwards instead."
(rmail-show-message-maybe msg))
(rmail-set-attribute rmail-deleted-attr-index nil)
(if (rmail-summary-exists)
(save-excursion
(set-buffer rmail-summary-buffer)
(with-current-buffer rmail-summary-buffer
(rmail-summary-mark-undeleted msg)))
(rmail-maybe-display-summary))))
@ -3407,8 +3402,7 @@ use \\[mail-yank-original] to yank the original message into it."
This is use in the send-actions for message buffers.
MSGNUM-LIST is a list of the form (MSGNUM)
which is an element of rmail-msgref-vector."
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(if (car msgnum-list)
(rmail-set-attribute attribute t (car msgnum-list)))))
@ -3816,7 +3810,8 @@ This has an effect only if a summary buffer exists."
(remove-hook 'rmail-show-message-hook 'rmail-fontify-message t)
(remove-text-properties (point-min) (point-max) '(rmail-fontified nil))
(font-lock-default-unfontify-buffer)
(and (not modified) (buffer-modified-p) (set-buffer-modified-p nil)))))
(and (not modified) (buffer-modified-p)
(restore-buffer-modified-p nil)))))
(defun rmail-fontify-message ()
;; Fontify the current message if it is not already fontified.
@ -3829,7 +3824,8 @@ This has an effect only if a summary buffer exists."
(save-match-data
(add-text-properties (point-min) (point-max) '(rmail-fontified t))
(font-lock-fontify-region (point-min) (point-max))
(and (not modified) (buffer-modified-p) (set-buffer-modified-p nil)))))))
(and (not modified) (buffer-modified-p)
(restore-buffer-modified-p nil)))))))
;;; Speedbar support for RMAIL files.
(eval-when-compile (require 'speedbar))
@ -3875,8 +3871,7 @@ Click on the address under Reply to: to reply to this person.
Under Folders: Click a name to read it, or on the <M> to move the
current message into that RMAIL folder."
(let ((from nil))
(save-excursion
(set-buffer buffer)
(with-current-buffer buffer
(goto-char (point-min))
(if (not (re-search-forward "^Reply-To: " nil t))
(if (not (re-search-forward "^From:? " nil t))
@ -3896,8 +3891,8 @@ current message into that RMAIL folder."
'rmail-speedbar-button 'rmail-reply))
(insert "Folders:\n")
(let* ((case-fold-search nil)
(df (directory-files (save-excursion (set-buffer buffer)
default-directory)
(df (directory-files (with-current-buffer buffer
default-directory)
nil rmail-speedbar-match-folder-regexp)))
(while df
(speedbar-insert-button "<M>" 'speedbar-button-face 'highlight