Mercurial > emacs
changeset 105602:6e207d2a8bc6
(rmail-cease-edit): Give an error if the end of the headers cannot be
located. Simplify, subtracting superflous save-excursions.
(See http://lists.gnu.org/archive/html/bug-gnu-emacs/2009-10/msg00182.html)
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 15 Oct 2009 06:00:20 +0000 |
parents | 68686d39c93a |
children | a51d05567a17 |
files | lisp/ChangeLog lisp/mail/rmailedit.el |
diffstat | 2 files changed, 25 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Thu Oct 15 01:50:17 2009 +0000 +++ b/lisp/ChangeLog Thu Oct 15 06:00:20 2009 +0000 @@ -1,3 +1,9 @@ +2009-10-15 Glenn Morris <rgm@gnu.org> + + * mail/rmailedit.el (rmail-cease-edit): Give an error if the end of + the headers cannot be located. Simplify, subtracting superflous + save-excursions. + 2009-10-15 Stefan Monnier <monnier@iro.umontreal.ca> Replace completion-base-size by completion-base-position to fix bugs
--- a/lisp/mail/rmailedit.el Thu Oct 15 01:50:17 2009 +0000 +++ b/lisp/mail/rmailedit.el Thu Oct 15 06:00:20 2009 +0000 @@ -126,19 +126,23 @@ (with-current-buffer rmail-summary-buffer (rmail-summary-enable))) (widen) + (goto-char (point-min)) + ;; This is far from ideal. The edit may have inadvertently + ;; removed the blank line at the end of the headers, but there + ;; are almost certainly other blank lines. + (or (search-forward "\n\n" nil t) + (error "There must be a blank line at the end of the headers")) ;; Disguise any "From " lines so they don't start a new message. - (save-excursion - (goto-char (point-min)) - (or rmail-old-pruned (forward-line 1)) - (while (re-search-forward "^>*From " nil t) - (beginning-of-line) - (insert ">") - (forward-line))) + (goto-char (point-min)) + (or rmail-old-pruned (forward-line 1)) + (while (re-search-forward "^>*From " nil t) + (beginning-of-line) + (insert ">") + (forward-line)) ;; Make sure buffer ends with a blank line so as not to run this ;; message together with the following one. - (save-excursion - (goto-char (point-max)) - (rmail-ensure-blank-line)) + (goto-char (point-max)) + (rmail-ensure-blank-line) (let ((old rmail-old-text) (pruned rmail-old-pruned) ;; People who know what they are doing might have modified the @@ -168,7 +172,6 @@ (string= old (buffer-substring (point-min) (point-max)))) (setq old nil) (goto-char (point-min)) - ;; FIXME the edit may have inadvertently removed this. (search-forward "\n\n") (setq headers-end (point-marker)) (goto-char (point-min)) @@ -204,20 +207,16 @@ (goto-char mime-end) (delete-region mime-beg mime-end) (insert mime-charset))))) - (goto-char headers-end) (setq new-headers (rmail-edit-headers-alist t)) (rmail-swap-buffers-maybe) (narrow-to-region (rmail-msgbeg rmail-current-message) (rmail-msgend rmail-current-message)) + (goto-char (point-min)) + (setq limit (search-forward "\n\n")) (save-restriction - (setq limit - (save-excursion - (goto-char (point-min)) - ;; FIXME this should not be using NOERROR. - (search-forward "\n\n" nil t))) ;; All 3 of the functions we call below assume the buffer was ;; narrowed to just the headers of the message. - (narrow-to-region (rmail-msgbeg rmail-current-message) limit) + (narrow-to-region (point-min) limit) (setq character-coding (mail-fetch-field "content-transfer-encoding") is-text-message (rmail-is-text-p) @@ -256,9 +255,8 @@ ;;??? BROKEN perhaps. ;;; (if (boundp 'rmail-summary-vector) ;;; (aset rmail-summary-vector (1- rmail-current-message) nil)) - (save-excursion - (rmail-show-message) - (rmail-toggle-header (if pruned 1 0)))) + (rmail-show-message) + (rmail-toggle-header (if pruned 1 0))) (run-hooks 'rmail-mode-hook)) (defun rmail-abort-edit ()