From 7c86d70e27dd91222d2894e18524086d4ad7dee9 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 10 Dec 2005 11:30:33 +0000 Subject: [PATCH] (rmail-next-same-subject): Handle multiple "Re: " strings and long subject lines that were broken into multiple lines at arbitrary places. --- lisp/ChangeLog | 6 ++++++ lisp/mail/rmail.el | 13 +++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) 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) -- 2.39.2