From: Eli Zaretskii Date: Sat, 10 Dec 2005 11:30:33 +0000 (+0000) Subject: (rmail-next-same-subject): Handle multiple "Re: " strings and long subject X-Git-Tag: emacs-pretest-22.0.90~5371 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=7c86d70e27dd91222d2894e18524086d4ad7dee9;p=emacs.git (rmail-next-same-subject): Handle multiple "Re: " strings and long subject lines that were broken into multiple lines at arbitrary places. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 39237924e11..fc01691525f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-12-10 Eli Zaretskii + + * mail/rmail.el (rmail-next-same-subject): Handle multiple "Re: " + strings and long subject lines that were broken into multiple + lines at arbitrary places. + 2005-12-10 John W. Eaton * emacs/octave-mod.el (octave-electric-space): Don't indent diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 0decf2813aa..b45467386ba 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -3155,13 +3155,18 @@ If N is negative, go backwards instead." search-regexp found) (if (string-match "\\`[ \t]+" subject) (setq subject (substring subject (match-end 0)))) - (if (string-match "Re:[ \t]*" subject) + (if (string-match "\\`\\(Re:[ \t]*\\)+" subject) (setq subject (substring subject (match-end 0)))) (if (string-match "[ \t]+\\'" subject) (setq subject (substring subject 0 (match-beginning 0)))) - (setq search-regexp (concat "^Subject: *\\(Re:[ \t]*\\)?" - (regexp-quote subject) - "[ \t]*\n")) + ;; If Subject is long, mailers will break it into several lines at + ;; arbitrary places, so replace whitespace with a regexp that will + ;; match any sequence of spaces, TABs, and newlines. + (setq subject (regexp-quote subject)) + (setq subject + (replace-regexp-in-string "[ \t\n]+" "[ \t\n]+" subject t t)) + (setq search-regexp (concat "^Subject: *\\(Re:[ \t]*\\)*" + subject "[ \t]*\n")) (save-excursion (save-restriction (widen)