[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r105628: Properly handle splitting of
From: |
Richard Stallman |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r105628: Properly handle splitting of Rmail buffer and message view buffer. |
Date: |
Wed, 31 Aug 2011 16:49:24 -0400 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 105628
committer: Richard Stallman <address@hidden>
branch nick: trunk
timestamp: Wed 2011-08-31 16:49:24 -0400
message:
Properly handle splitting of Rmail buffer and message view buffer.
modified:
lisp/ChangeLog
lisp/mail/rmail.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2011-08-31 09:27:49 +0000
+++ b/lisp/ChangeLog 2011-08-31 20:49:24 +0000
@@ -1,3 +1,11 @@
+2011-08-31 Richard Stallman <address@hidden>
+
+ * mail/rmail.el (rmail-epa-decrypt): Rewrite to take account
+ of the separation of rmail-view-buffer from rmail-buffer.
+ If you say no to "replace original", the decrypt is in the
+ view buffer. If you say yes, the decrypt goes into the
+ rmail buffer also.
+
2011-08-31 Martin Rudalics <address@hidden>
* window.el (display-buffer-window): Rewrite doc-string.
=== modified file 'lisp/mail/rmail.el'
--- a/lisp/mail/rmail.el 2011-08-16 02:29:15 +0000
+++ b/lisp/mail/rmail.el 2011-08-31 20:49:24 +0000
@@ -4308,7 +4308,7 @@
;; change it in one of the calls to `epa-decrypt-region'.
(save-excursion
- (let (new-buffer not-first-armor)
+ (let (decrypts)
(goto-char (point-min))
;; In case the encrypted data is inside a mime attachment,
@@ -4324,8 +4324,8 @@
;; and decrypt them one by one.
(goto-char (point-min))
(while (re-search-forward "-----BEGIN PGP MESSAGE-----$" nil t)
- (let (armor-start armor-end
- (coding-system-for-read coding-system-for-read))
+ (let ((coding-system-for-read coding-system-for-read)
+ armor-start armor-end after-end)
(setq armor-start (match-beginning 0)
armor-end (re-search-forward "^-----END PGP MESSAGE-----$"
nil t))
@@ -4345,64 +4345,39 @@
;; Advance over this armor.
(goto-char armor-end)
+ (setq after-end (- (point-max) armor-end))
;; Decrypt it, maybe in place, maybe making new buffer.
(epa-decrypt-region
armor-start armor-end
;; Call back this function to prepare the output.
(lambda ()
- (if (or not-first-armor
- (y-or-n-p "Replace the original message? "))
- ;; User wants to decrypt in place,
- ;; or this isn't the first armor.
- ;; We only ask the question for the first armor.
- (let ((inhibit-read-only t))
- (delete-region armor-start armor-end)
- (goto-char armor-start)
- (current-buffer))
- ;; User says not to replace the original text.
- (or new-buffer
- (let ((from-buffer
- (if (rmail-buffers-swapped-p)
- rmail-view-buffer rmail-buffer))
- (from-pruned (rmail-msg-is-pruned))
- (beg (rmail-msgbeg rmail-current-message))
- (end (rmail-msgend rmail-current-message)))
- (with-current-buffer (generate-new-buffer "*Decrypt*")
- (setq buffer-read-only nil)
- (insert-buffer-substring from-buffer beg end)
- (rmail-mode)
- ;; This should be pruned if the original message was.
- (unless from-pruned (rmail-toggle-header))
- (goto-char (point-min))
-
- ;; Find the first armor in the text we just copied.
- ;; What we copied may not be identical
- ;; to the initial text.
- (re-search-forward "-----BEGIN PGP MESSAGE-----$")
- (setq armor-start (match-beginning 0))
- (re-search-forward "^-----END PGP MESSAGE-----$")
- (setq armor-end (point))
- ;; Delete it and put point there.
- (let ((inhibit-read-only t))
- (delete-region armor-start armor-end))
- (goto-char armor-start)
- (setq new-buffer (current-buffer))
- ;; Return; epa-decrypt-region will insert plaintext.
- ))))))
-
- (setq not-first-armor t)
-
- ;; If we copied the buffer, switch to the copy
- ;; for the rest of this loop.
- ;; Point is the only buffer pointer that is live here,
- ;; and it was properly set in NEW-BUFFER by `epa-decrypt-region'
- ;; when it inserted the decrypted epa
- (if new-buffer (set-buffer new-buffer))))
-
- ;; If we decrypted into a new buffer, show it.
- (if new-buffer
- (display-buffer new-buffer)))))
+ (let ((inhibit-read-only t))
+ (delete-region armor-start armor-end)
+ (goto-char armor-start)
+ (current-buffer))))
+
+ (push (list armor-start (- (point-max) after-end))
+ decrypts)))
+
+ (when (and decrypts (rmail-buffers-swapped-p))
+ (when (y-or-n-p "Replace the original message? ")
+ (setq decrypts (nreverse decrypts))
+ (let ((beg (rmail-msgbeg rmail-current-message))
+ (end (rmail-msgend rmail-current-message))
+ (from-buffer (current-buffer)))
+ (with-current-buffer rmail-view-buffer
+ (narrow-to-region beg end)
+ (goto-char (point-min))
+ (dolist (d decrypts)
+ (if (re-search-forward "-----BEGIN PGP MESSAGE-----$" nil t)
+ (let (armor-start armor-end)
+ (setq armor-start (match-beginning 0)
+ armor-end (re-search-forward "^-----END PGP
MESSAGE-----$"
+ nil t))
+ (when armor-end
+ (delete-region armor-start armor-end)
+ (insert-buffer-substring from-buffer (nth 0 d) (nth 1
d)))))))))))))
;;;; Desktop support
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r105628: Properly handle splitting of Rmail buffer and message view buffer.,
Richard Stallman <=