unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
From: David Edmondson <dme@dme.org>
To: Nicolas Bock <nicolasbock@gmail.com>, notmuch@notmuchmail.org
Subject: Re: format=flowed incorrect line wrapping
Date: Fri, 21 Dec 2018 12:39:33 +0000	[thread overview]
Message-ID: <cund0pvcauy.fsf@disaster-area.hh.sledj.net> (raw)
In-Reply-To: <m28t0jyu0p.fsf@dme.org>

[-- Attachment #1: Type: text/plain, Size: 1209 bytes --]

On Friday, 2018-12-21 at 11:54:46 GMT, David Edmondson wrote:

> On Thursday, 2018-12-20 at 07:00:08 -07, Nicolas Bock wrote:
>
>> sorry I didn't explain my problem very well. What I am looking for 
>> is to reflow (to borrow a term from NeoMutt [1]) an email message 
>> that I am _reading_ to the buffer width.  Currently format=flowed 
>> emails are simply shown as they are in the raw email body. Editing 
>> and sending emails in format=flowed works fine.
>
> Currently emacs doesn't know that the text/plain part has the
> format=flowed attribute, so it can't do anything about it.
>
> Two options occur to me:
> - ensure that emacs knows the attributes of the part so that it could be
>   extended to do something useful,

Here's a hacky patch that takes this approach. Does it do what you would
expect?

A complication is the indentation of parts, which makes it hard to set a
good value for `fill-flowed-display-column' (because you don't know the
indentation depth).

A wash function (which would be the cleaner approach, presuming that we
passed the part to all wash functions) *does* know the indentation
depth, and so could perhaps adjust the value of
`fill-flowed-encode-column' appropriately.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: format=flowed.patch --]
[-- Type: text/x-diff, Size: 1499 bytes --]

diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 78f1af47..18cbc690 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -744,6 +744,11 @@ will return nil if the CID is unknown or cannot be retrieved."
     (save-excursion
       (save-restriction
 	(narrow-to-region start (point-max))
+	;; XXX dme: It would be much nicer to do this using a wash
+	;; function attached to the hook, but that doesn't currently
+	;; get access to the part and so cannot check the format.
+	(when (string= (plist-get part :format) "flowed")
+	  (fill-flowed))
 	(run-hook-with-args 'notmuch-show-insert-text/plain-hook msg depth))))
   t)
 
diff --git a/notmuch-show.c b/notmuch-show.c
index 07e9a5db..92d18bb8 100644
--- a/notmuch-show.c
+++ b/notmuch-show.c
@@ -708,6 +708,19 @@ format_part_sprinter (const void *ctx, sprinter_t *sp, mime_node_t *node,
     }
 
     if (GMIME_IS_PART (node->part)) {
+	/* Include the format parameter of text/plain parts if it
+	 * exists, allowing the UI to adapt the display of the part as
+	 * appropriate.
+	 */
+	if (g_mime_content_type_is_type (content_type, "text", "plain")) {
+	    const char *format =
+		g_mime_object_get_content_type_parameter (node->part, "format");
+	    if (format) {
+		sp->map_key (sp, "format");
+		sp->string (sp, format);
+	    }
+	}
+
 	/* For non-HTML text parts, we include the content in the
 	 * JSON. Since JSON must be Unicode, we handle charset
 	 * decoding here and do not report a charset to the caller.

[-- Attachment #3: Type: text/plain, Size: 41 bytes --]


dme.
-- 
When I grow up I'll be stable.

  reply	other threads:[~2018-12-21 12:39 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-19 22:15 format=flowed incorrect line wrapping Nicolas Bock
2018-12-19 23:02 ` Dan Čermák
2018-12-20 14:00   ` Nicolas Bock
2018-12-21 11:54     ` David Edmondson
2018-12-21 12:39       ` David Edmondson [this message]
2018-12-21 13:18         ` Nicolas Bock

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

  List information: https://notmuchmail.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cund0pvcauy.fsf@disaster-area.hh.sledj.net \
    --to=dme@dme.org \
    --cc=nicolasbock@gmail.com \
    --cc=notmuch@notmuchmail.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 public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).