1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-28 19:42:02 +00:00

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.
This commit is contained in:
Paul Eggert 2012-04-20 12:17:59 -07:00
parent 24c51a09d6
commit 4b932ea214
3 changed files with 36 additions and 8 deletions

View File

@ -1,3 +1,19 @@
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>
* progmodes/gdb-mi.el (gdb-control-level): New variable.

View File

@ -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
other-headers)
@ -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."
(prog1
(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."
(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.
(defun rmail-continue ()
@ -3731,9 +3742,7 @@ use \\[mail-yank-original] to yank the original message into it."
(mail-strip-quoted-names
(if (null cc) to (concat to ", " cc))))))
(if (string= cc-list "") nil cc-list)))
(if (rmail-buffers-swapped-p)
rmail-buffer
rmail-view-buffer)
rmail-buffer
(list (list 'rmail-mark-message
rmail-buffer
(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
forward-buffer
(with-current-buffer rmail-buffer

View File

@ -863,7 +863,10 @@ 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)
(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))