;;; rmailsum.el --- make summary buffers for the mail reader
;; Copyright (C) 1985, 1993, 1994, 1995, 1996, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: mail
(progn
(split-window (selected-window) rmail-summary-window-size)
(select-window (next-window (frame-first-window)))
- (pop-to-buffer rmail-summary-buffer)
+ (rmail-pop-to-buffer rmail-summary-buffer)
;; If pop-to-buffer did not use that window, delete that
;; window. (This can happen if it uses another frame.)
(if (not (eq rmail-summary-buffer
(window-buffer (frame-first-window))))
(delete-other-windows)))
- (pop-to-buffer rmail-summary-buffer))
+ (rmail-pop-to-buffer rmail-summary-buffer))
(set-buffer rmail-buffer)
;; This is how rmail makes the summary buffer reappear.
;; We do this here to make the window the proper size.
With prefix argument N moves forward N messages with these labels."
(interactive "p\nsMove to next msg with labels: ")
(let (msg)
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(rmail-next-labeled-message n labels)
(setq msg rmail-current-message))
(rmail-summary-goto-msg msg)))
With prefix argument N moves backward N messages with these labels."
(interactive "p\nsMove to previous msg with labels: ")
(let (msg)
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(rmail-previous-labeled-message n labels)
(setq msg rmail-current-message))
(rmail-summary-goto-msg msg)))
(rmail-summary-goto-msg)
(if rmail-enable-mime
(set-buffer rmail-buffer)
- (pop-to-buffer rmail-buffer))
+ (rmail-pop-to-buffer rmail-buffer))
(and (rmail-message-deleted-p rmail-current-message)
(rmail-undelete-previous-message))
(if rmail-enable-mime
- (pop-to-buffer rmail-buffer))
- (pop-to-buffer rmail-summary-buffer))
+ (rmail-pop-to-buffer rmail-buffer))
+ (rmail-pop-to-buffer rmail-summary-buffer))
(t (goto-char opoint))))))
(defun rmail-summary-undelete-many (&optional n)
"Undelete all deleted msgs, optional prefix arg N means undelete N prev msgs."
(interactive "P")
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(let* ((init-msg (if n rmail-current-message rmail-total-messages))
(rmail-current-message init-msg)
(n (or n rmail-total-messages))
(rmail-show-message msg-num t))
(select-window owin))
(if (buffer-name rmail-buffer)
- (save-excursion
- (set-buffer rmail-buffer)
- (rmail-show-message msg-num t))))))
+ (with-current-buffer rmail-buffer
+ (rmail-show-message msg-num t))))
+ ;; In linum mode, the message buffer must be specially
+ ;; updated (Bug#4878).
+ (and (fboundp 'linum-update)
+ (buffer-name rmail-buffer)
+ (linum-update rmail-buffer))))
(rmail-summary-update-highlight nil)))))
(defun rmail-summary-save-buffer ()
(curmsg (string-to-number
(buffer-substring (point)
(min (point-max) (+ 6 (point))))))
- (total (save-excursion (set-buffer buf) rmail-total-messages)))
+ (total (with-current-buffer buf rmail-total-messages)))
;; If message number N was specified, find that message's line
;; or set message-not-found.
;; If N wasn't specified or that message can't be found.
(unless skip-rmail
(let ((selwin (selected-window)))
(unwind-protect
- (progn (pop-to-buffer buf)
+ (progn (rmail-pop-to-buffer buf)
(rmail-show-message n))
(select-window selwin)
;; The actions above can alter the current buffer. Preserve it.
(let ((buffer rmail-buffer))
(split-window (selected-window) rmail-summary-window-size)
(select-window (frame-first-window))
- (pop-to-buffer rmail-buffer)
+ (rmail-pop-to-buffer rmail-buffer)
;; If pop-to-buffer did not use that window, delete that
;; window. (This can happen if it uses another frame.)
(or (eq buffer (window-buffer (next-window (frame-first-window))))
(delete-other-windows)))
- (pop-to-buffer rmail-buffer))
+ (rmail-pop-to-buffer rmail-buffer))
(cond
((eq where 'BEG)
(goto-char (point-min))
(goto-char (point-max))
(recenter (1- (window-height))))
)
- (pop-to-buffer rmail-summary-buffer))
+ (rmail-pop-to-buffer rmail-summary-buffer))
(defun rmail-summary-bury ()
"Bury the Rmail buffer and the Rmail summary buffer."
(defun rmail-summary-wipe ()
"Kill and wipe away Rmail summary, remaining within Rmail."
(interactive)
- (save-excursion (set-buffer rmail-buffer) (setq rmail-summary-buffer nil))
+ (with-current-buffer rmail-buffer (setq rmail-summary-buffer nil))
(let ((local-rmail-buffer rmail-buffer))
(kill-buffer (current-buffer))
;; Delete window if not only one.
(if (not (eq (selected-window) (next-window nil 'no-minibuf)))
(delete-window))
;; Switch windows to the rmail buffer, or switch to it in this window.
- (pop-to-buffer local-rmail-buffer)))
+ (rmail-pop-to-buffer local-rmail-buffer)))
(defun rmail-summary-expunge ()
"Actually erase all deleted messages and recompute summary headers."
(interactive)
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(when (rmail-expunge-confirmed)
(rmail-only-expunge)))
(rmail-update-summary))
(list (if current-prefix-arg
(read-file-name "Get new mail from file: "))))
(let (msg)
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(rmail-get-new-mail file-name)
;; Get the proper new message number.
(setq msg rmail-current-message))
"Run Rmail on file FILENAME."
(interactive "FRun rmail on RMAIL file: ")
;; We switch windows here, then display the other Rmail file there.
- (pop-to-buffer rmail-buffer)
+ (rmail-pop-to-buffer rmail-buffer)
(rmail filename))
(defun rmail-summary-first-message ()
(defun rmail-summary-edit-current-message ()
"Edit the contents of this message."
(interactive)
- (pop-to-buffer rmail-buffer)
+ (rmail-pop-to-buffer rmail-buffer)
(rmail-edit-current-message)
(use-local-map rmail-summary-edit-map))
"Finish editing message, then go back to Rmail summary buffer."
(interactive)
(rmail-cease-edit)
- (pop-to-buffer rmail-summary-buffer))
+ (rmail-pop-to-buffer rmail-summary-buffer))
(defun rmail-summary-abort-edit ()
"Abort edit of current message; restore original contents.
Go back to summary buffer."
(interactive)
(rmail-abort-edit)
- (pop-to-buffer rmail-summary-buffer))
+ (rmail-pop-to-buffer rmail-summary-buffer))
(defun rmail-summary-search-backward (regexp &optional n)
"Show message containing next match for REGEXP.
(prefix-numeric-value current-prefix-arg))))
;; Don't use save-excursion because that prevents point from moving
;; properly in the summary buffer.
- (let ((buffer (current-buffer)))
- (unwind-protect
- (progn
- (set-buffer rmail-buffer)
- (rmail-search regexp (- n)))
- (set-buffer buffer))))
+ (with-current-buffer rmail-buffer
+ (rmail-search regexp (- n))))
(defun rmail-summary-search (regexp &optional n)
"Show message containing next match for REGEXP.
(selwin (selected-window)))
(unwind-protect
(progn
- (pop-to-buffer rmail-buffer)
+ (rmail-pop-to-buffer rmail-buffer)
(rmail-search regexp n))
(select-window selwin)
(set-buffer buffer))))
(defun rmail-summary-add-label (label)
"Add LABEL to labels associated with current Rmail message.
Completion is performed over known labels when reading."
- (interactive (list (save-excursion
- (set-buffer rmail-buffer)
+ (interactive (list (with-current-buffer rmail-buffer
(rmail-read-label "Add label"))))
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(rmail-add-label label)))
(defun rmail-summary-kill-label (label)
"Remove LABEL from labels associated with current Rmail message.
Completion is performed over known labels when reading."
- (interactive (list (save-excursion
- (set-buffer rmail-buffer)
+ (interactive (list (with-current-buffer rmail-buffer
(rmail-read-label "Kill label"))))
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(rmail-set-label label nil)))
\f
;;;; *** Rmail Summary Mailing Commands ***
The variables `rmail-secondary-file-directory' and
`rmail-secondary-file-regexp' control which files are offered in the menu."
(interactive)
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(let ((rmail-delete-after-output nil))
(call-interactively 'rmail-output-menu)))
(if rmail-delete-after-output
"Write this message body to the file FILE-NAME.
FILE-NAME defaults, interactively, from the Subject field of the message."
(interactive)
- (save-excursion
- (set-buffer rmail-buffer)
+ (with-current-buffer rmail-buffer
(let ((rmail-delete-after-output nil))
(if file-name
(rmail-output-body-to-file file-name)
(require 'rmailsort)
(let ((selwin (selected-window)))
(unwind-protect
- (progn (pop-to-buffer rmail-buffer)
+ (progn (rmail-pop-to-buffer rmail-buffer)
(funcall sortfun reverse))
(select-window selwin))))