Mercurial > emacs
diff lisp/gnus/flow-fill.el @ 112108:c24551a0cd95
flow-fill.el (fill-flowed-encode): Do encoding citation-aware.
gnus-art.el (gnus-treat-fill-long-lines): Add missing version tag.
gnus-msg.el (gnus-message-replyencrypt): Fix typo in version string.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Tue, 04 Jan 2011 02:24:15 +0000 |
parents | f2e111723c3a |
children | 417b1e4d63cd |
line wrap: on
line diff
--- a/lisp/gnus/flow-fill.el Mon Jan 03 15:50:05 2011 -0500 +++ b/lisp/gnus/flow-fill.el Tue Jan 04 02:24:15 2011 +0000 @@ -1,7 +1,7 @@ ;;; flow-fill.el --- interpret RFC2646 "flowed" text -;; Copyright (C) 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +;; 2009, 2010, 2011 Free Software Foundation, Inc. ;; Author: Simon Josefsson <jas@pdc.kth.se> ;; Keywords: mail @@ -82,19 +82,38 @@ ;; Go through each paragraph, filling it and adding SPC ;; as the last character on each line. (while (setq end (text-property-any start (point-max) 'hard 't)) - (let ((fill-column (eval fill-flowed-encode-column))) - (fill-region start end t 'nosqueeze 'to-eop)) - (goto-char start) - ;; `fill-region' probably distorted end. - (setq end (text-property-any start (point-max) 'hard 't)) - (while (and (< (point) end) - (re-search-forward "$" (1- end) t)) - (insert " ") - (setq end (1+ end)) - (forward-char)) - (goto-char (setq start (1+ end))))) + (save-restriction + (narrow-to-region start end) + (let ((fill-column (eval fill-flowed-encode-column))) + (fill-flowed-fill-buffer)) + (goto-char (point-min)) + (while (re-search-forward "\n" nil t) + (replace-match " \n" t t)) + (goto-char (setq start (1+ (point-max))))))) t))) +(defun fill-flowed-fill-buffer () + (let ((prefix nil) + (prev-prefix nil) + (start (point-min))) + (goto-char (point-min)) + (while (not (eobp)) + (setq prefix (and (looking-at "[> ]+") + (match-string 0))) + (if (equal prefix prev-prefix) + (forward-line 1) + (save-restriction + (narrow-to-region start (point)) + (let ((fill-prefix prev-prefix)) + (fill-region (point-min) (point-max) t 'nosqueeze 'to-eop)) + (goto-char (point-max))) + (setq prev-prefix prefix + start (point)))) + (save-restriction + (narrow-to-region start (point)) + (let ((fill-prefix prev-prefix)) + (fill-region (point-min) (point-max) t 'nosqueeze 'to-eop))))) + ;;;###autoload (defun fill-flowed (&optional buffer delete-space) (with-current-buffer (or (current-buffer) buffer)