(rmail-expunge-and-save): Always show a message,
even when called from the summary. (Bug#2075) (rmail-no-mail-p): New func, extracted from rmail-show-message-maybe. (rmail-show-message-maybe): Use rmail-no-mail-p. (rmail-show-message): If empty folder, do nothing. (Bug#2076)
This commit is contained in:
parent
3ea5d765e7
commit
9940a3eca7
2 changed files with 117 additions and 89 deletions
|
@ -1,3 +1,24 @@
|
|||
2009-01-28 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* mail/rmail.el (rmail-expunge-and-save): Always show a message,
|
||||
even when called from the summary. (Bug#2075)
|
||||
(rmail-no-mail-p): New func, extracted from rmail-show-message-maybe.
|
||||
(rmail-show-message-maybe): Use rmail-no-mail-p.
|
||||
(rmail-show-message): If empty folder, do nothing. (Bug#2076)
|
||||
|
||||
(rmail-get-labels): Separate status and label fields with a semicolon,
|
||||
rather than a comma, for consistency with old Rmail.
|
||||
|
||||
* mail/rmailsum.el (rmail-message-recipients-p-1): Don't bother
|
||||
starting from the beginning, since mail-fetch-field does not care.
|
||||
(rmail-create-summary-line): Fix unseen handling. (Bug#2089)
|
||||
(rmail-get-summary-status): New name for old rmail-get-summary-labels.
|
||||
(rmail-get-summary-labels): New function. Returns labels rather than
|
||||
status (edited, etc).
|
||||
(rmail-create-summary): Insert an extra space after the status
|
||||
flags, for consistency with old rmail, and with current
|
||||
rmail-summary-font-lock-keywords.
|
||||
|
||||
2009-01-28 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* progmodes/perl-mode.el (perl-indent-line-command): Call
|
||||
|
@ -84,7 +105,8 @@
|
|||
(batch-unrmail, unrmail): Doc fix.
|
||||
|
||||
* mail/rmailsum.el (rmail-message-recipients-p-1)
|
||||
(rmail-message-regexp-p-1): Avoid clobbering the mark.
|
||||
(rmail-message-regexp-p-1): Ensure searches start from the
|
||||
beginning of the header.
|
||||
|
||||
2009-01-27 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
|
|
|
@ -1392,8 +1392,8 @@ If so restore the actual mbox message collection."
|
|||
(rmail-swap-buffers-maybe)
|
||||
(save-buffer)
|
||||
(if (rmail-summary-exists)
|
||||
(rmail-select-summary (set-buffer-modified-p nil))
|
||||
(rmail-show-message)))
|
||||
(rmail-select-summary (set-buffer-modified-p nil)))
|
||||
(rmail-show-message))
|
||||
|
||||
(defun rmail-quit ()
|
||||
"Quit out of RMAIL.
|
||||
|
@ -2051,7 +2051,8 @@ If nil, that means the current message."
|
|||
(if (string= keywords "")
|
||||
(setq keywords nil))
|
||||
(cond
|
||||
((and attr-names keywords) (concat " " attr-names ", " keywords))
|
||||
;; FIXME ? old rmail did not have spaces in the comma-separated lists.
|
||||
((and attr-names keywords) (concat " " attr-names "; " keywords))
|
||||
(attr-names (concat " " attr-names))
|
||||
(keywords (concat " " keywords))
|
||||
(t ""))))
|
||||
|
@ -2150,14 +2151,14 @@ This function assumes the Rmail buffer is unswapped."
|
|||
(save-excursion
|
||||
(save-restriction
|
||||
(let ((start (rmail-msgbeg msg))
|
||||
limit)
|
||||
(widen)
|
||||
(goto-char start)
|
||||
(setq limit (search-forward "\n\n" (rmail-msgend msg) t))
|
||||
(goto-char start)
|
||||
(and limit
|
||||
(search-forward (concat rmail-attribute-header ": ") limit t)
|
||||
(looking-at attrs))))))
|
||||
limit)
|
||||
(widen)
|
||||
(goto-char start)
|
||||
(setq limit (search-forward "\n\n" (rmail-msgend msg) t))
|
||||
(goto-char start)
|
||||
(and limit
|
||||
(search-forward (concat rmail-attribute-header ": ") limit t)
|
||||
(looking-at attrs))))))
|
||||
|
||||
(defun rmail-message-unseen-p (msgnum)
|
||||
"Test the unseen attribute for message MSGNUM.
|
||||
|
@ -2429,6 +2430,14 @@ Ask the user whether to add that list name to `mail-mailing-lists'."
|
|||
(rmail-swap-buffers-maybe)
|
||||
(widen))
|
||||
|
||||
(defun rmail-no-mail-p ()
|
||||
"Return nil if there is mail, else \"No mail.\"."
|
||||
(if (zerop rmail-total-messages)
|
||||
(save-excursion
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(erase-buffer)
|
||||
"No mail."))))
|
||||
|
||||
(defun rmail-show-message-maybe (&optional n no-summary)
|
||||
"Show message number N (prefix argument), counting from start of file.
|
||||
If summary buffer is currently displayed, update current message there also."
|
||||
|
@ -2439,12 +2448,8 @@ If summary buffer is currently displayed, update current message there also."
|
|||
(rmail-maybe-set-message-counters)
|
||||
(widen)
|
||||
(let ((msgnum (or n rmail-current-message))
|
||||
blurb)
|
||||
(if (zerop rmail-total-messages)
|
||||
(save-excursion
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(erase-buffer)
|
||||
(setq blurb "No mail.")))
|
||||
(blurb (rmail-no-mail-p)))
|
||||
(unless blurb
|
||||
(setq blurb (rmail-show-message msgnum))
|
||||
(when mail-mailing-lists
|
||||
(rmail-unknown-mail-followup-to))
|
||||
|
@ -2484,77 +2489,78 @@ The current mail message becomes the message displayed."
|
|||
blurb beg end body-start coding-system character-coding is-text-message)
|
||||
(if (not msg)
|
||||
(setq msg rmail-current-message))
|
||||
(cond ((<= msg 0)
|
||||
(setq msg 1
|
||||
rmail-current-message 1
|
||||
blurb "No previous message"))
|
||||
((> msg rmail-total-messages)
|
||||
(setq msg rmail-total-messages
|
||||
rmail-current-message rmail-total-messages
|
||||
blurb "No following message"))
|
||||
(t (setq rmail-current-message msg)))
|
||||
(with-current-buffer rmail-buffer
|
||||
;; Mark the message as seen, bracket the message in the mail
|
||||
;; buffer and determine the coding system the transfer encoding.
|
||||
(rmail-set-attribute rmail-unseen-attr-index nil)
|
||||
(rmail-swap-buffers-maybe)
|
||||
(setq beg (rmail-msgbeg msg)
|
||||
end (rmail-msgend msg))
|
||||
(narrow-to-region beg end)
|
||||
(goto-char beg)
|
||||
(setq body-start (search-forward "\n\n" nil t))
|
||||
(narrow-to-region beg (point))
|
||||
(goto-char beg)
|
||||
(setq character-coding (mail-fetch-field "content-transfer-encoding")
|
||||
is-text-message (rmail-is-text-p)
|
||||
coding-system (rmail-get-coding-system))
|
||||
(if character-coding
|
||||
(setq character-coding (downcase character-coding)))
|
||||
(narrow-to-region beg end)
|
||||
;; Decode the message body into an empty view buffer using a
|
||||
;; unibyte temporary buffer where the character decoding takes
|
||||
;; place.
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(erase-buffer))
|
||||
(if (null character-coding)
|
||||
;; Do it directly since that is fast.
|
||||
(rmail-decode-region body-start end coding-system view-buf)
|
||||
;; Can this be done directly, skipping the temp buffer?
|
||||
(with-temp-buffer
|
||||
(set-buffer-multibyte nil)
|
||||
(insert-buffer-substring mbox-buf body-start end)
|
||||
(cond
|
||||
((string= character-coding "quoted-printable")
|
||||
(mail-unquote-printable-region (point-min) (point-max)))
|
||||
((and (string= character-coding "base64") is-text-message)
|
||||
(base64-decode-region (point-min) (point-max)))
|
||||
((eq character-coding 'uuencode)
|
||||
(error "Not supported yet"))
|
||||
(t))
|
||||
(rmail-decode-region (point-min) (point-max)
|
||||
coding-system view-buf)))
|
||||
;; Copy the headers to the front of the message view buffer.
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(goto-char (point-min)))
|
||||
(rmail-copy-headers beg end)
|
||||
;; Add the separator (blank line) between headers and body;
|
||||
;; highlight the message, activate any URL like text and add
|
||||
;; special highlighting for and quoted material.
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(insert "\n")
|
||||
(goto-char (point-min))
|
||||
(rmail-highlight-headers)
|
||||
;(rmail-activate-urls)
|
||||
;(rmail-process-quoted-material)
|
||||
)
|
||||
;; Update the mode-line with message status information and swap
|
||||
;; the view buffer/mail buffer contents.
|
||||
(rmail-display-labels)
|
||||
(let ((modp (buffer-modified-p)))
|
||||
(buffer-swap-text rmail-view-buffer)
|
||||
(set-buffer-modified-p modp))
|
||||
(setq rmail-buffer-swapped t)
|
||||
(run-hooks 'rmail-show-message-hook))
|
||||
(unless (setq blurb (rmail-no-mail-p))
|
||||
(cond ((<= msg 0)
|
||||
(setq msg 1
|
||||
rmail-current-message 1
|
||||
blurb "No previous message"))
|
||||
((> msg rmail-total-messages)
|
||||
(setq msg rmail-total-messages
|
||||
rmail-current-message rmail-total-messages
|
||||
blurb "No following message"))
|
||||
(t (setq rmail-current-message msg)))
|
||||
(with-current-buffer rmail-buffer
|
||||
;; Mark the message as seen, bracket the message in the mail
|
||||
;; buffer and determine the coding system the transfer encoding.
|
||||
(rmail-set-attribute rmail-unseen-attr-index nil)
|
||||
(rmail-swap-buffers-maybe)
|
||||
(setq beg (rmail-msgbeg msg)
|
||||
end (rmail-msgend msg))
|
||||
(narrow-to-region beg end)
|
||||
(goto-char beg)
|
||||
(setq body-start (search-forward "\n\n" nil t))
|
||||
(narrow-to-region beg (point))
|
||||
(goto-char beg)
|
||||
(setq character-coding (mail-fetch-field "content-transfer-encoding")
|
||||
is-text-message (rmail-is-text-p)
|
||||
coding-system (rmail-get-coding-system))
|
||||
(if character-coding
|
||||
(setq character-coding (downcase character-coding)))
|
||||
(narrow-to-region beg end)
|
||||
;; Decode the message body into an empty view buffer using a
|
||||
;; unibyte temporary buffer where the character decoding takes
|
||||
;; place.
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(erase-buffer))
|
||||
(if (null character-coding)
|
||||
;; Do it directly since that is fast.
|
||||
(rmail-decode-region body-start end coding-system view-buf)
|
||||
;; Can this be done directly, skipping the temp buffer?
|
||||
(with-temp-buffer
|
||||
(set-buffer-multibyte nil)
|
||||
(insert-buffer-substring mbox-buf body-start end)
|
||||
(cond
|
||||
((string= character-coding "quoted-printable")
|
||||
(mail-unquote-printable-region (point-min) (point-max)))
|
||||
((and (string= character-coding "base64") is-text-message)
|
||||
(base64-decode-region (point-min) (point-max)))
|
||||
((eq character-coding 'uuencode)
|
||||
(error "Not supported yet"))
|
||||
(t))
|
||||
(rmail-decode-region (point-min) (point-max)
|
||||
coding-system view-buf)))
|
||||
;; Copy the headers to the front of the message view buffer.
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(goto-char (point-min)))
|
||||
(rmail-copy-headers beg end)
|
||||
;; Add the separator (blank line) between headers and body;
|
||||
;; highlight the message, activate any URL like text and add
|
||||
;; special highlighting for and quoted material.
|
||||
(with-current-buffer rmail-view-buffer
|
||||
(insert "\n")
|
||||
(goto-char (point-min))
|
||||
(rmail-highlight-headers)
|
||||
;(rmail-activate-urls)
|
||||
;(rmail-process-quoted-material)
|
||||
)
|
||||
;; Update the mode-line with message status information and swap
|
||||
;; the view buffer/mail buffer contents.
|
||||
(rmail-display-labels)
|
||||
(let ((modp (buffer-modified-p)))
|
||||
(buffer-swap-text rmail-view-buffer)
|
||||
(set-buffer-modified-p modp))
|
||||
(setq rmail-buffer-swapped t)
|
||||
(run-hooks 'rmail-show-message-hook)))
|
||||
blurb))
|
||||
|
||||
(defun rmail-copy-headers (beg end &optional ignored-headers)
|
||||
|
|
Loading…
Add table
Reference in a new issue