[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 4c4ff9d 3/3: Fix breaking of rfc2047 headers with l
From: |
Lars Ingebrigtsen |
Subject: |
[Emacs-diffs] master 4c4ff9d 3/3: Fix breaking of rfc2047 headers with long words |
Date: |
Fri, 12 Jul 2019 09:59:48 -0400 (EDT) |
branch: master
commit 4c4ff9d90aa040ef3e1e474b3aa6a29f54c88e2e
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>
Fix breaking of rfc2047 headers with long words
* lisp/mail/rfc2047.el (rfc2047-fold-region): Don't break lines
right after the Header: field, but wait until the next
whitespace. (This only makes a difference for words that are very
long (i.e., longer than, say, 60 characters, depending on the
header name length.)
---
lisp/mail/rfc2047.el | 7 ++++---
test/lisp/mail/rfc2047-tests.el | 38 ++++++++++++++++++++++++++------------
2 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/lisp/mail/rfc2047.el b/lisp/mail/rfc2047.el
index 9de6f02..e331512 100644
--- a/lisp/mail/rfc2047.el
+++ b/lisp/mail/rfc2047.el
@@ -765,7 +765,9 @@ Point moves to the end of the region."
;; Whitespace -- possible break point.
((memq (char-after) '(? ?\t))
(skip-chars-forward " \t")
- (unless first ;; Don't break just after the header name.
+ ;; Don't break just after the header name.
+ (if first
+ (setq first nil)
(setq break (point))))
;; If the header has been encoded (with RFC2047 encoding,
;; which looks like "=?utf-8?Q?F=C3=B3?=".
@@ -780,8 +782,7 @@ Point moves to the end of the region."
(skip-chars-forward "^ \t\n\r")))
;; Look for the next LWSP (i.e., whitespace character).
(t
- (skip-chars-forward "^ \t\n\r")))
- (setq first nil))
+ (skip-chars-forward "^ \t\n\r"))))
(when (and (or break qword-break)
(> (- (point) bol) 76))
;; Finally, after the loop, we have a line longer than 76
diff --git a/test/lisp/mail/rfc2047-tests.el b/test/lisp/mail/rfc2047-tests.el
index 8f7b345..bfaf995 100644
--- a/test/lisp/mail/rfc2047-tests.el
+++ b/test/lisp/mail/rfc2047-tests.el
@@ -22,25 +22,39 @@
(require 'ert)
(require 'rfc2047)
-(ert-deftest test-rfc2047-fold-short ()
+(defun test-rfc2047 (before after)
(with-temp-buffer
- (insert "Organization: Lots Of Short Words Here Lots Of Short Words Here
Lots Of Short Words Here\n")
+ (insert before)
(goto-char (point-min))
(rfc2047-fold-field)
- (should (equal (buffer-string)
- "Organization: Lots Of Short Words Here Lots Of Short Words
Here Lots Of
+ (should (equal (buffer-string) after))))
+
+(ert-deftest test-rfc2047-fold-short ()
+ (test-rfc2047
+ "Organization: Lots Of Short Words Here Lots Of Short Words Here Lots Of
Short Words Here\n"
+
+ "Organization: Lots Of Short Words Here Lots Of Short Words Here Lots Of
Short Words Here
-"))))
+"))
(ert-deftest test-rfc2047-fold-encoded ()
- (with-temp-buffer
- (insert "Subject: This is =?utf-8?Q?=C3=A1?= long subject that's
=?utf-8?Q?v=C3=A9ry?= long and =?utf-8?Q?ver=C3=BD?= encoded yes indeed it
=?utf-8?Q?=C3=ADs?=\n")
- (goto-char (point-min))
- (rfc2047-fold-field)
- (should (equal (buffer-string)
- "Subject: This is =?utf-8?Q?=C3=A1?= long subject that's
+ (test-rfc2047
+ "Subject: This is =?utf-8?Q?=C3=A1?= long subject that's
=?utf-8?Q?v=C3=A9ry?= long and =?utf-8?Q?ver=C3=BD?= encoded yes indeed it
=?utf-8?Q?=C3=ADs?=\n"
+ "Subject: This is =?utf-8?Q?=C3=A1?= long subject that's
=?utf-8?Q?v=C3=A9ry?= long and =?utf-8?Q?ver=C3=BD?= encoded yes indeed it
=?utf-8?Q?=C3=ADs?=
-"))))
+"))
+
+(ert-deftest test-rfc2047-fold-long ()
+ (test-rfc2047
+ "Organization:
verylongverylongverylongverylongverylongverylongverylongverylongverylongword
and then\n"
+ "Organization:
verylongverylongverylongverylongverylongverylongverylongverylongverylongword
+ and then
+"))
+
+(ert-deftest test-rfc2047-fold-long-short ()
+ (test-rfc2047
+ "Organization:
verylongverylongverylongverylongverylongverylongverylongverylongverylongword\n"
+ "Organization:
verylongverylongverylongverylongverylongverylongverylongverylongverylongword\n"))
;;; rfc2047-tests.el ends here