changeset 106099:fc3c7104330d

(rfc2047-decode-region): Don't quote decoded words containing tspecial characters if they have been already quoted. -- Synch with Gnus trunk.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Tue, 17 Nov 2009 22:10:40 +0000
parents 8c46fe65b4c6
children 427dc37dae1b
files lisp/gnus/ChangeLog lisp/gnus/rfc2047.el
diffstat 2 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Tue Nov 17 21:57:48 2009 +0000
+++ b/lisp/gnus/ChangeLog	Tue Nov 17 22:10:40 2009 +0000
@@ -1,3 +1,8 @@
+2009-11-17  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* rfc2047.el (rfc2047-decode-region): Don't quote decoded words
+	containing tspecial characters if they have been already quoted.
+
 2009-10-24  Glenn Morris  <rgm@gnu.org>
 
 	* gnus-art.el (help-xref-stack-item): Define for compiler.
--- a/lisp/gnus/rfc2047.el	Tue Nov 17 21:57:48 2009 +0000
+++ b/lisp/gnus/rfc2047.el	Tue Nov 17 22:10:40 2009 +0000
@@ -1026,6 +1026,7 @@
 	    ;; things essentially must not be there.
 	    (while (re-search-forward "[\n\r]+" nil t)
 	      (replace-match " "))
+	    (setq end (point-max))
 	    ;; Quote decoded words if there are special characters
 	    ;; which might violate RFC2822.
 	    (when (and rfc2047-quote-decoded-words-containing-tspecials
@@ -1035,10 +1036,15 @@
 			 (when regexp
 			   (save-restriction
 			     (widen)
-			     (beginning-of-line)
-			     (while (and (memq (char-after) '(?  ?\t))
-					 (zerop (forward-line -1))))
-			     (looking-at regexp)))))
+			     (and
+			      ;; Don't quote words if already quoted.
+			      (not (and (eq (char-before e) ?\")
+					(eq (char-after end) ?\")))
+			      (progn
+				(beginning-of-line)
+				(while (and (memq (char-after) '(?  ?\t))
+					    (zerop (forward-line -1))))
+				(looking-at regexp)))))))
 	      (let (quoted)
 		(goto-char e)
 		(skip-chars-forward " \t")