Mercurial > emacs
changeset 10662:cd968ab6a0eb
(rmail-next-same-subject): New command.
(rmail-previous-same-subject): Likewise.
(rmail-mode-map): Add bindings for C-c C-n and C-c C-p.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 05 Feb 1995 02:46:08 +0000 |
parents | 32beb7b6dbf7 |
children | b0bf7d40a75d |
files | lisp/mail/rmail.el |
diffstat | 1 files changed, 50 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/mail/rmail.el Sun Feb 05 00:25:16 1995 +0000 +++ b/lisp/mail/rmail.el Sun Feb 05 02:46:08 1995 +0000 @@ -414,6 +414,8 @@ (define-key rmail-mode-map "\C-c\C-s\C-c" 'rmail-sort-by-correspondent) (define-key rmail-mode-map "\C-c\C-s\C-l" 'rmail-sort-by-lines) (define-key rmail-mode-map "\C-c\C-s\C-k" 'rmail-sort-by-keywords) + (define-key rmail-mode-map "\C-c\C-n" 'rmail-next-same-subject) + (define-key rmail-mode-map "\C-c\C-p" 'rmail-previous-same-subject) ) (define-key rmail-mode-map [menu-bar] (make-sparse-keymap)) @@ -1747,6 +1749,54 @@ ;; (if found ;; (rmail-show-message found)) found)) + +(defun rmail-next-same-subject (n) + "Go to the next mail message having the same subject header. +With prefix argument N, do this N times. +If N is negative, go backwards instead." + (interactive "p") + (let* ((subject (mail-fetch-field "Subject")) + (search-regexp (concat "^Subject: *\\(Re: *\\)?" + (regexp-quote subject) + "\n")) + (forward (> n 0)) + (i rmail-current-message) + found) + (if (string-match "Re:[ \t]*" subject) + (setq subject (substring subject (match-end 0)))) + (save-excursion + (save-restriction + (widen) + (while (and (/= n 0) + (if forward + (< i rmail-total-messages) + (> i 1))) + (let (done) + (while (and (not done) + (if forward + (< i rmail-total-messages) + (> i 1))) + (setq i (if forward (1+ i) (1- i))) + (goto-char (rmail-msgbeg i)) + (search-forward "\n*** EOOH ***\n") + (let ((beg (point)) end) + (search-forward "\n\n") + (setq end (point)) + (goto-char beg) + (setq done (re-search-forward search-regexp end t)))) + (if done (setq found i))) + (setq n (if forward (1- n) (1+ n)))))) + (if found + (rmail-show-message found) + (error "No %s message with same subject" + (if forward "following" "previous"))))) + +(defun rmail-previous-same-subject (n) + "Go to the previous mail message having the same subject header. +With prefix argument N, do this N times. +If N is negative, go forwards instead." + (interactive "p") + (rmail-next-same-subject (- n))) ;;;; *** Rmail Message Deletion Commands ***