]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve Rmail Subject normalization when replying
authorFrancesco Potortì <pot@gnu.org>
Fri, 22 Dec 2017 13:48:19 +0000 (15:48 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 22 Dec 2017 13:48:19 +0000 (15:48 +0200)
* lisp/mail/rmail.el (rmail-simplified-subject): A more thorough
implementation which removes more prefixes from Subject.
(Bug#29659)

lisp/mail/rmail.el

index 994570edcb28e2e75b86fe853ea0820f5d03050c..c32f000d30630a513f4655dac50a639d1cbc768e 100644 (file)
@@ -3399,21 +3399,15 @@ Interactively, empty argument means use same regexp used last time."
 
 (defun rmail-simplified-subject (&optional msgnum)
   "Return the simplified subject of message MSGNUM (or current message).
-Simplifying the subject means stripping leading and trailing whitespace,
-and typical reply prefixes such as Re:."
-  (let ((subject (or (rmail-get-header "Subject" msgnum) "")))
+Simplifying the subject means stripping leading and trailing
+whitespace, replacing whitespace runs with a single space and
+removing prefixes such as Re:, Fwd: and so on and mailing list
+tags such as [tag]."
+  (let ((subject (or (rmail-get-header "Subject" msgnum) ""))
+       (regexp "\`[ \t\n]*\\(\\(\\w\\{1,3\\}:\\|\\[[^]]+]\\)[ \t\n]+\\)*"))
     (setq subject (rfc2047-decode-string subject))
-    (if (string-match "\\`[ \t]+" subject)
-       (setq subject (substring subject (match-end 0))))
-    (if (string-match rmail-reply-regexp subject)
-       (setq subject (substring subject (match-end 0))))
-    (if (string-match "[ \t]+\\'" subject)
-       (setq subject (substring subject 0 (match-beginning 0))))
-    ;; If Subject is long, mailers will break it into several lines at
-    ;; arbitrary places, so normalize whitespace by replacing every
-    ;; run of whitespace characters with a single space.
-    (setq subject (replace-regexp-in-string "[ \t\n]+" " " subject))
-    subject))
+    (setq subject (replace-regexp-in-string regexp "" subject))
+    (replace-regexp-in-string "[ \t\n]+" " " subject)))
 
 (defun rmail-simplified-subject-regexp ()
   "Return a regular expression matching the current simplified subject.