summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/mail/rmail.el49
1 files changed, 25 insertions, 24 deletions
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 69e4b39e45d..8279adaad24 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1109,30 +1109,31 @@ argument causes us to read a file name and use that file as the inbox."
(omin (point-min-marker))
(buffer-read-only nil))
(or msgnum (setq msgnum rmail-current-message))
- (unwind-protect
- (save-excursion
- (widen)
- (goto-char (+ 3 (rmail-msgbeg msgnum)))
- (let ((curstate
- (not
- (null (search-backward (concat ", " attr ",")
- (prog1 (point) (end-of-line)) t)))))
- (or (eq curstate (not (not state)))
- (if curstate
- (delete-region (point) (1- (match-end 0)))
- (beginning-of-line)
- (forward-char 2)
- (insert " " attr ","))))
- (if (string= attr "deleted")
- (rmail-set-message-deleted-p msgnum state)))
- ;; Note: we don't use save-restriction because that does not work right
- ;; if changes are made outside the saved restriction
- ;; before that restriction is restored.
- (narrow-to-region omin omax)
- (set-marker omin nil)
- (set-marker omax nil)
- (if (= msgnum rmail-current-message)
- (rmail-display-labels)))))
+ (if (> msgnum 0)
+ (unwind-protect
+ (save-excursion
+ (widen)
+ (goto-char (+ 3 (rmail-msgbeg msgnum)))
+ (let ((curstate
+ (not
+ (null (search-backward (concat ", " attr ",")
+ (prog1 (point) (end-of-line)) t)))))
+ (or (eq curstate (not (not state)))
+ (if curstate
+ (delete-region (point) (1- (match-end 0)))
+ (beginning-of-line)
+ (forward-char 2)
+ (insert " " attr ","))))
+ (if (string= attr "deleted")
+ (rmail-set-message-deleted-p msgnum state)))
+ ;; Note: we don't use save-restriction because that does not work right
+ ;; if changes are made outside the saved restriction
+ ;; before that restriction is restored.
+ (narrow-to-region omin omax)
+ (set-marker omin nil)
+ (set-marker omax nil)
+ (if (= msgnum rmail-current-message)
+ (rmail-display-labels))))))
;; Return t if the attributes/keywords line of msg number MSG
;; contains a match for the regexp LABELS.