;;;###autoload
(defcustom rmail-summary-line-count-flag t
- "*Non-nil if Rmail summary should show the number of lines in each message."
+ "*Non-nil means Rmail summary should show the number of lines in each message."
:type 'boolean
:group 'rmail-summary)
("^.....-.*" . font-lock-type-face) ; Unread.
;; Neither of the below will be highlighted if either of the above are:
("^.....[^D-] \\(......\\)" 1 font-lock-keyword-face) ; Date.
- ("{ \\([^\n}]+\\),}" 1 font-lock-comment-face)) ; Labels.
+ ("{ \\([^\n}]+\\) }" 1 font-lock-comment-face)) ; Labels.
"Additional expressions to highlight in Rmail Summary mode.")
;; Entry points for making a summary buffer.
(defun rmail-summary-by-topic (subject &optional whole-message)
"Display a summary of all messages with the given SUBJECT.
Normally checks the Subject field of headers;
-but if WHOLE-MESSAGE is non-nil (prefix arg given),
+but if WHOLE-MESSAGE is non-nil (prefix arg given),
look in the whole message.
SUBJECT is a string of regexps separated by commas."
(interactive "sTopics to summarize by: \nP")
""
(concat "{"
(buffer-substring (point)
- (progn (end-of-line) (point)))
- "} ")))))
+ (progn (end-of-line)
+ (backward-char)
+ (if (looking-at ",")
+ (point)
+ (1+ (point)))))
+ " } ")))))
(line
(progn
(forward-line 1)
(cond ((re-search-forward "\\([^0-9:]\\)\\([0-3]?[0-9]\\)\\([- \t_]+\\)\\([adfjmnos][aceopu][bcglnprtvy]\\)"
(save-excursion (end-of-line) (point)) t)
(format "%2d-%3s"
- (string-to-int (buffer-substring
- (match-beginning 2)
- (match-end 2)))
+ (string-to-number (buffer-substring
+ (match-beginning 2)
+ (match-end 2)))
(buffer-substring
(match-beginning 4) (match-end 4))))
((re-search-forward "\\([^a-z]\\)\\([adfjmnos][acepou][bcglnprtvy]\\)\\([-a-z \t_]*\\)\\([0-9][0-9]?\\)"
(save-excursion (end-of-line) (point)) t)
(format "%2d-%3s"
- (string-to-int (buffer-substring
- (match-beginning 4)
- (match-end 4)))
+ (string-to-number (buffer-substring
+ (match-beginning 4)
+ (match-end 4)))
(buffer-substring
(match-beginning 2) (match-end 2))))
((re-search-forward "\\(19\\|20\\)\\([0-9][0-9]\\)-\\([01][0-9]\\)-\\([0-3][0-9]\\)"
(t "??????"))))
" "
(save-excursion
- (if (not (re-search-forward "^From:[ \t]*" nil t))
- " "
- (let* ((from (mail-strip-quoted-names
- (buffer-substring
- (1- (point))
- ;; Get all the lines of the From field
- ;; so that we get a whole comment if there is one,
- ;; so that mail-strip-quoted-names can discard it.
- (let ((opoint (point)))
- (while (progn (forward-line 1)
- (looking-at "[ \t]")))
- ;; Back up over newline, then trailing spaces or tabs
- (forward-char -1)
- (skip-chars-backward " \t")
- (point)))))
- len mch lo)
- (if (string-match
- (or rmail-user-mail-address-regexp
- (concat "^\\("
- (regexp-quote (user-login-name))
- "\\($\\|@\\)\\|"
- (regexp-quote
- ;; Don't lose if run from init file
- ;; where user-mail-address is not
- ;; set yet.
- (or user-mail-address
- (concat (user-login-name) "@"
- (or mail-host-address
- (system-name)))))
- "\\>\\)"))
- from)
- (save-excursion
- (goto-char (point-min))
- (if (not (re-search-forward "^To:[ \t]*" nil t))
- nil
- (setq from
- (concat "to: "
- (mail-strip-quoted-names
- (buffer-substring
- (point)
- (progn (end-of-line)
- (skip-chars-backward " \t")
- (point)))))))))
+ (let* ((from (and (re-search-forward "^From:[ \t]*" nil t)
+ (mail-strip-quoted-names
+ (buffer-substring
+ (1- (point))
+ ;; Get all the lines of the From field
+ ;; so that we get a whole comment if there is one,
+ ;; so that mail-strip-quoted-names can discard it.
+ (let ((opoint (point)))
+ (while (progn (forward-line 1)
+ (looking-at "[ \t]")))
+ ;; Back up over newline, then trailing spaces or tabs
+ (forward-char -1)
+ (skip-chars-backward " \t")
+ (point))))))
+ len mch lo)
+ (if (or (null from)
+ (string-match
+ (or rmail-user-mail-address-regexp
+ (concat "^\\("
+ (regexp-quote (user-login-name))
+ "\\($\\|@\\)\\|"
+ (regexp-quote
+ ;; Don't lose if run from init file
+ ;; where user-mail-address is not
+ ;; set yet.
+ (or user-mail-address
+ (concat (user-login-name) "@"
+ (or mail-host-address
+ (system-name)))))
+ "\\>\\)"))
+ from))
+ ;; No From field, or it's this user.
+ (save-excursion
+ (goto-char (point-min))
+ (if (not (re-search-forward "^To:[ \t]*" nil t))
+ nil
+ (setq from
+ (concat "to: "
+ (mail-strip-quoted-names
+ (buffer-substring
+ (point)
+ (progn (end-of-line)
+ (skip-chars-backward " \t")
+ (point)))))))))
+ (if (null from)
+ " "
(setq len (length from))
(setq mch (string-match "[@%]" from))
(format "%25s"
non-del-msg-found)))
(setq count (1- count))))
(beginning-of-line)
- (display-buffer rmail-view-buffer)
- )
+ (display-buffer rmail-view-buffer))
(defun rmail-summary-previous-msg (&optional number)
+ "Display previous non-deleted msg from rmail file.
+With optional prefix argument NUMBER, moves backward this number of
+non-deleted messages."
(interactive "p")
(rmail-summary-next-msg (- (if number number 1))))
(defun rmail-summary-next-labeled-message (n labels)
- "Show next message with LABEL. Defaults to last labels used.
+ "Show next message with LABELS. Defaults to last labels used.
With prefix argument N moves forward N messages with these labels."
(interactive "p\nsMove to next msg with labels: ")
(let (msg)
(rmail-summary-goto-msg msg)))
(defun rmail-summary-previous-labeled-message (n labels)
- "Show previous message with LABEL. Defaults to last labels used.
+ "Show previous message with LABELS. Defaults to last labels used.
With prefix argument N moves backward N messages with these labels."
(interactive "p\nsMove to previous msg with labels: ")
(let (msg)
;; Advance thru summary.
(forward-line (if forward 1 -1))
;; Get msg number of this line.
- (setq i (string-to-int
+ (setq i (string-to-number
(buffer-substring (point)
(min (point-max) (+ 6 (point))))))
;; See if that msg has desired subject.
(make-local-variable 'font-lock-defaults)
(setq font-lock-defaults '(rmail-summary-font-lock-keywords t))
(rmail-summary-enable)
- (run-hooks 'rmail-summary-mode-hook))
+ (run-mode-hooks 'rmail-summary-mode-hook))
;; Summary features need to be disabled during edit mode.
(defun rmail-summary-disable ()
(forward-line -1))
(beginning-of-line)
(skip-chars-forward " ")
- (let ((msg-num (string-to-int (buffer-substring
- (point)
- (progn (skip-chars-forward "0-9")
- (point))))))
+ (let ((msg-num (string-to-number (buffer-substring
+ (point)
+ (progn (skip-chars-forward "0-9")
+ (point))))))
;; Always leave `unseen' removed
;; if we get out of isearch mode.
;; Don't let a subsequent isearch restore that `unseen'.
(buf rmail-buffer)
(cur (point))
message-not-found
- (curmsg (string-to-int
+ (curmsg (string-to-number
(buffer-substring (point)
(min (point-max) (+ 6 (point))))))
(total (save-excursion (set-buffer buf) rmail-total-messages)))
(if (< n 1)
(progn (message "No preceding message")
(setq n 1)))
- (if (> n total)
+ (if (and (> n total)
+ (> total 0))
(progn (message "No following message")
(goto-char (point-max))
(rmail-summary-goto-msg nil nowarn skip-rmail)))
;;;; *** Rmail Summary Mailing Commands ***
(defun rmail-summary-override-mail-send-and-exit ()
- "Replace bindings to 'mail-send-and-exit with 'rmail-summary-send-and-exit"
+ "Replace bindings to `mail-send-and-exit' with `rmail-summary-send-and-exit'."
(use-local-map (copy-keymap (current-local-map)))
(dolist (key (where-is-internal 'mail-send-and-exit))
(define-key (current-local-map) key 'rmail-summary-send-and-exit)))
(rmail-summary-override-mail-send-and-exit)))
(defun rmail-summary-resend ()
- "Resend current message using 'rmail-resend'."
+ "Resend current message using `rmail-resend'."
(interactive)
(save-excursion
(let ((window (get-buffer-window rmail-buffer)))
(list (rmail-output-read-rmail-file-name)
(prefix-numeric-value current-prefix-arg))))
(let ((i 0) prev-msg)
- (while
+ (while
(and (< i n)
(progn (rmail-summary-goto-msg)
(not (eq prev-msg
(setq prev-msg
- (with-current-buffer rmail-buffer
+ (with-current-buffer rmail-buffer
rmail-current-message))))))
(setq i (1+ i))
(with-current-buffer rmail-buffer
(if files
(progn
(define-key rmail-summary-mode-map [menu-bar classify input-menu]
- (cons "Input Rmail File"
- (rmail-list-to-menu "Input Rmail File"
+ (cons "Input Rmail File"
+ (rmail-list-to-menu "Input Rmail File"
files
'rmail-summary-input)))
(define-key rmail-summary-mode-map [menu-bar classify output-menu]
- (cons "Output Rmail File"
- (rmail-list-to-menu "Output Rmail File"
+ (cons "Output Rmail File"
+ (rmail-list-to-menu "Output Rmail File"
files
'rmail-summary-output-to-rmail-file))))
(define-key rmail-summary-mode-map [menu-bar classify input-menu]
(provide 'rmailsum)
+;;; arch-tag: 556079ee-75c1-47f5-9884-2e0a0bc6c5a1
;;; rmailsum.el ends here