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:
parent
73d7bcb918
commit
2dc00ad0c3
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user