From: Stefan Kangas <stefankangas@gmail.com>
To: Sandra Snan <sandra.snan@idiomdrottning.org>
Cc: 71017@debbugs.gnu.org
Subject: bug#71017: fill-flowed-encode
Date: Sat, 29 Jun 2024 22:44:09 -0700 [thread overview]
Message-ID: <CADwFkm=fhoQGLgEHv6XsDPTzyeJBO+--krz+4RkoBoLjtGg1bQ@mail.gmail.com> (raw)
In-Reply-To: <87v83cfaqx.fsf@ellen.idiomdrottning.org> (Sandra Snan's message of "Fri, 17 May 2024 22:23:50 +0200")
Sandra Snan <sandra.snan@idiomdrottning.org> writes:
> Hi y'all.
Hi Sandra,
> flow-fill.el.gz has a pair of functions, fill-flowed-encode and
> fill-flowed-fill-buffer (the latter is only called from the former).
>
> Here is a fixed version of the former that then also deprecates the latter (I
> have signed FSF copyright papers):
>
> (defun fill-flowed-encode (&optional buffer)
> (with-current-buffer (or buffer (current-buffer))
> ;; No point in doing this unless hard newlines is used.
> (when use-hard-newlines
> (let ((start (point-min)) end)
> ;; Go through each paragraph, filling it and adding SPC
> ;; as the last character on each line.
> (while (and (< start (point-max))
> (setq end (or (text-property-any start (point-max) 'hard 't)
> (point-max))))
> (save-restriction
> (narrow-to-region start end)
> (let ((fill-column (eval fill-flowed-encode-column t))
> (prefix
> (concat "\n"
> (or (and (looking-at ">[> ]*")
> (match-string 0)) ""))))
> (while (search-forward prefix nil t)
> (replace-match " " t t))
> (goto-char start)
> (while (< (+ (point) fill-column) (point-max))
> (forward-char fill-column)
> (search-backward " ")
> (forward-char)
> (insert prefix)))
> (setq start (1+ (point-max))))))
> t)))
>
> This fixes two bugs when sending RFC 2646–formatted email.
>
> First, the old code didn't refill or encode the last paragraph at all unless
> there was at least one hard newline EOF.
>
> Second, the old code borked up code indented with tabs and spaces (iff that code
> had overly long lines), such as the Lisp code in this email. It could sometimes
> insert extra in the middle of such long lines.
>
> Here is an example of what it would do. It would turn this:
>
> (defun lorem (ipsum)
> (dolor sit amet)
> (consectetur adipiscing elit (sed do eiusmod tempor incididunt ut labore et
> dolore magna aliqua))
> (ut enim ad minim veniam
> (quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
> consequat
> (duis aute irure dolor in reprehenderit in
> voluptate velit esse cillum dolore
> eu fugiat nulla pariatur)
> excepteur sint occaecat cupidatat non proident
> (sunt in culpa qui officia deserunt mollit anim id est laborumd))))
>
> into this:
>
> (defun lorem (ipsum)
> (dolor sit amet)
> (consectetur adipiscing elit (sed do eiusmod tempor incididunt
> ut labore et dolore magna aliqua))
> (ut enim ad minim veniam
> (quis nostrud exercitation ullamco laboris nisi ut aliquip
> ex ea commodo consequat
> (duis aute irure dolor in reprehenderit in
> voluptate velit esse cillum dolore
> eu fugiat nulla pariatur)
> excepteur sint occaecat cupidatat non proident
> (sunt in culpa qui officia deserunt mollit anim id est
> laborumd))))
>
> It was breaking lines awkwardly so when they're reconnected they have extra
> whitespace in the mkddle of lines.
Could you please resend the above as patches formatted by
git format-patch -1
?
It will make it easier for us to review and install the proposed
changes. Thanks in advance.
next prev parent reply other threads:[~2024-06-30 5:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-17 20:23 bug#71017: fill-flowed-encode Sandra Snan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-30 5:44 ` Stefan Kangas [this message]
2024-06-30 8:32 ` Sandra Snan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-30 14:34 ` Stefan Kangas
2024-07-06 20:49 ` bug#71017: [PATCH] Flow single-paragraph messages Sandra Snan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 5:43 ` Eli Zaretskii
2024-07-07 8:34 ` Sandra Snan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 9:04 ` Sandra Snan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 9:16 ` Sandra Snan via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-07 10:02 ` Sandra Snan via Bug reports for GNU Emacs, the Swiss army knife of text editors
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CADwFkm=fhoQGLgEHv6XsDPTzyeJBO+--krz+4RkoBoLjtGg1bQ@mail.gmail.com' \
--to=stefankangas@gmail.com \
--cc=71017@debbugs.gnu.org \
--cc=sandra.snan@idiomdrottning.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.