Commit 5f6530ea authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

Fix logic for returning to and yanking from Rmail buffer.

parent aba027e8
2012-04-17 Richard Stallman <>
* mail/rmail.el (rmail-start-mail):
Pass (rmail-mail-return...) for the return-action.
Pass (rmail-yank-current-message...) for the yank-action.
(rmail-yank-current-message): New function.
(rmail-mail): Pass the Rmail buffer, not view buffer, for replybuffer.
(rmail-reply): Likewise.
(rmail-forward): Pass the Rmail buffer, not nil, for replybuffer.
* mail/sendmail.el (mail-bury): Choose the first rmail-mode
buffer, not the last. Reject temp buffers. Use the rmail-mode
buffer, not newbuf.
2012-04-17 Juanma Barranquero <>
* server.el (server-ensure-safe-dir): Simplify.
......@@ -3560,6 +3560,16 @@ does not pop any summary buffer."
;;;; *** Rmail Mailing Commands ***
(defun rmail-yank-current-message (buffer)
"Yank into the current buffer the current message of Rmail buffer BUFFER.
If BUFFER is swapped with its message viewer buffer, yank out of BUFFER.
If BUFFER is not swapped, yank out of its message viewer buffer."
(with-current-buffer buffer
(unless (rmail-buffers-swapped-p)
(setq buffer rmail-view-buffer)))
(insert-buffer buffer))
(defun rmail-start-mail (&optional noerase to subject in-reply-to cc
replybuffer sendactions same-window
......@@ -3571,7 +3581,8 @@ does not pop any summary buffer."
(if replybuffer
;; The function used here must behave like insert-buffer wrt
;; point and mark (see doc of sc-cite-original).
(setq yank-action (list 'insert-buffer replybuffer)))
(setq yank-action
`(rmail-yank-current-message ,replybuffer)))
(push (cons "cc" cc) other-headers)
(push (cons "in-reply-to" in-reply-to) other-headers)
(setq other-headers
......@@ -3587,7 +3598,7 @@ does not pop any summary buffer."
(compose-mail to subject other-headers noerase
switch-function yank-action sendactions
`(rmail-mail-return ,replybuffer))
(if replybuffer `(rmail-mail-return ,replybuffer)))
(if (eq switch-function 'switch-to-buffer-other-frame)
;; This is not a standard frame parameter; nothing except
;; sendmail.el looks at it.
......@@ -3644,7 +3655,7 @@ to switch to."
While composing the message, use \\[mail-yank-original] to yank the
original message into it."
(rmail-start-mail nil nil nil nil nil rmail-view-buffer))
(rmail-start-mail nil nil nil nil nil rmail-buffer))
;; FIXME should complain if there is nothing to continue.
(defun rmail-continue ()
......@@ -3731,9 +3742,7 @@ use \\[mail-yank-original] to yank the original message into it."
(if (null cc) to (concat to ", " cc))))))
(if (string= cc-list "") nil cc-list)))
(if (rmail-buffers-swapped-p)
(list (list 'rmail-mark-message
(with-current-buffer rmail-buffer
......@@ -3835,7 +3844,7 @@ see the documentation of `rmail-resend'."
(or (mail-fetch-field "Subject") "")
(if (rmail-start-mail
nil nil subject nil nil nil
nil nil subject nil nil rmail-buffer
(list (list 'rmail-mark-message
(with-current-buffer rmail-buffer
......@@ -863,8 +863,11 @@ Prefix arg means don't delete this window."
;; even if this message was not started by an Rmail command.
(unless return-action
(dolist (buffer (buffer-list))
(if (eq (buffer-local-value 'major-mode buffer) 'rmail-mode)
(setq return-action `(rmail-mail-return ,newbuf)))))
(if (and (eq (buffer-local-value 'major-mode buffer) 'rmail-mode)
(null return-action)
;; Don't match message-viewer buffer.
(not (string-match "\\` " (buffer-name buffer))))
(setq return-action `(rmail-mail-return ,buffer)))))
(if (and (null arg) return-action)
(apply (car return-action) (cdr return-action))
(switch-to-buffer newbuf))))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment