Commit 4b932ea2 authored by Paul Eggert's avatar Paul Eggert
Browse files

Fix logic for returning to and yanking from Rmail buffer.

* 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.
parent 24c51a09
2012-04-20 Richard Stallman <rms@gnu.org>
Fix logic for returning to and yanking from Rmail buffer.
* 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-20 Eli Zaretskii <eliz@gnu.org> 2012-04-20 Eli Zaretskii <eliz@gnu.org>
* progmodes/gdb-mi.el (gdb-control-level): New variable. * progmodes/gdb-mi.el (gdb-control-level): New variable.
......
...@@ -3560,6 +3560,16 @@ does not pop any summary buffer." ...@@ -3560,6 +3560,16 @@ does not pop any summary buffer."
;;;; *** Rmail Mailing Commands *** ;;;; *** 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 (defun rmail-start-mail (&optional noerase to subject in-reply-to cc
replybuffer sendactions same-window replybuffer sendactions same-window
other-headers) other-headers)
...@@ -3571,7 +3581,8 @@ does not pop any summary buffer." ...@@ -3571,7 +3581,8 @@ does not pop any summary buffer."
(if replybuffer (if replybuffer
;; The function used here must behave like insert-buffer wrt ;; The function used here must behave like insert-buffer wrt
;; point and mark (see doc of sc-cite-original). ;; 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 "cc" cc) other-headers)
(push (cons "in-reply-to" in-reply-to) other-headers) (push (cons "in-reply-to" in-reply-to) other-headers)
(setq other-headers (setq other-headers
...@@ -3587,7 +3598,7 @@ does not pop any summary buffer." ...@@ -3587,7 +3598,7 @@ does not pop any summary buffer."
(prog1 (prog1
(compose-mail to subject other-headers noerase (compose-mail to subject other-headers noerase
switch-function yank-action sendactions switch-function yank-action sendactions
`(rmail-mail-return ,replybuffer)) (if replybuffer `(rmail-mail-return ,replybuffer)))
(if (eq switch-function 'switch-to-buffer-other-frame) (if (eq switch-function 'switch-to-buffer-other-frame)
;; This is not a standard frame parameter; nothing except ;; This is not a standard frame parameter; nothing except
;; sendmail.el looks at it. ;; sendmail.el looks at it.
...@@ -3644,7 +3655,7 @@ to switch to." ...@@ -3644,7 +3655,7 @@ to switch to."
While composing the message, use \\[mail-yank-original] to yank the While composing the message, use \\[mail-yank-original] to yank the
original message into it." original message into it."
(interactive) (interactive)
(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. ;; FIXME should complain if there is nothing to continue.
(defun rmail-continue () (defun rmail-continue ()
...@@ -3731,9 +3742,7 @@ use \\[mail-yank-original] to yank the original message into it." ...@@ -3731,9 +3742,7 @@ use \\[mail-yank-original] to yank the original message into it."
(mail-strip-quoted-names (mail-strip-quoted-names
(if (null cc) to (concat to ", " cc)))))) (if (null cc) to (concat to ", " cc))))))
(if (string= cc-list "") nil cc-list))) (if (string= cc-list "") nil cc-list)))
(if (rmail-buffers-swapped-p) rmail-buffer
rmail-buffer
rmail-view-buffer)
(list (list 'rmail-mark-message (list (list 'rmail-mark-message
rmail-buffer rmail-buffer
(with-current-buffer rmail-buffer (with-current-buffer rmail-buffer
...@@ -3835,7 +3844,7 @@ see the documentation of `rmail-resend'." ...@@ -3835,7 +3844,7 @@ see the documentation of `rmail-resend'."
(or (mail-fetch-field "Subject") "") (or (mail-fetch-field "Subject") "")
"]"))) "]")))
(if (rmail-start-mail (if (rmail-start-mail
nil nil subject nil nil nil nil nil subject nil nil rmail-buffer
(list (list 'rmail-mark-message (list (list 'rmail-mark-message
forward-buffer forward-buffer
(with-current-buffer rmail-buffer (with-current-buffer rmail-buffer
......
...@@ -863,7 +863,10 @@ Prefix arg means don't delete this window." ...@@ -863,7 +863,10 @@ Prefix arg means don't delete this window."
;; even if this message was not started by an Rmail command. ;; even if this message was not started by an Rmail command.
(unless return-action (unless return-action
(dolist (buffer (buffer-list)) (dolist (buffer (buffer-list))
(if (eq (buffer-local-value 'major-mode buffer) 'rmail-mode) (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))))) (setq return-action `(rmail-mail-return ,buffer)))))
(if (and (null arg) return-action) (if (and (null arg) return-action)
(apply (car return-action) (cdr return-action)) (apply (car return-action) (cdr return-action))
......
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