mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-17 23:14:52 +01:00
emacs/show: optionally insert bodies of "deep messages" lazily
This leverages the machinery already there to insert buttons for attachments. A potential use-case is browsing the top layers of the tree to decide which of the lower subtrees to read.
This commit is contained in:
parent
ded2eb1a50
commit
1d254bd35e
5 changed files with 203 additions and 2 deletions
|
@ -277,6 +277,9 @@ Display of messages can be controlled by the following variables
|
||||||
:index:`notmuch-show-header-line`
|
:index:`notmuch-show-header-line`
|
||||||
|docstring::notmuch-show-header-line|
|
|docstring::notmuch-show-header-line|
|
||||||
|
|
||||||
|
:index:`notmuch-show-depth-limit`
|
||||||
|
|docstring::notmuch-show-depth-limit|
|
||||||
|
|
||||||
:index:`notmuch-multipart/alternative-discouraged`
|
:index:`notmuch-multipart/alternative-discouraged`
|
||||||
|
|
||||||
Which mime types to hide by default for multipart messages.
|
Which mime types to hide by default for multipart messages.
|
||||||
|
|
|
@ -110,6 +110,19 @@ displayed."
|
||||||
(function :tag "Function"))
|
(function :tag "Function"))
|
||||||
:group 'notmuch-show)
|
:group 'notmuch-show)
|
||||||
|
|
||||||
|
(defcustom notmuch-show-depth-limit nil
|
||||||
|
"Depth beyond which message bodies are displayed lazily.
|
||||||
|
|
||||||
|
If bound to an integer, any message with tree depth greater than
|
||||||
|
this will have its body display lazily, initially
|
||||||
|
inserting only a button.
|
||||||
|
|
||||||
|
If this variable is set to nil (the default) no such lazy
|
||||||
|
insertion is done."
|
||||||
|
:type '(choice (const :tag "No limit" nil)
|
||||||
|
(number :tag "Limit" 10))
|
||||||
|
:group 'notmuch-show)
|
||||||
|
|
||||||
(defcustom notmuch-show-relative-dates t
|
(defcustom notmuch-show-relative-dates t
|
||||||
"Display relative dates in the message summary line."
|
"Display relative dates in the message summary line."
|
||||||
:type 'boolean
|
:type 'boolean
|
||||||
|
@ -1030,17 +1043,21 @@ is t, hide the part initially and show the button."
|
||||||
(> notmuch-show-max-text-part-size 0)
|
(> notmuch-show-max-text-part-size 0)
|
||||||
(> (length (plist-get part :content))
|
(> (length (plist-get part :content))
|
||||||
notmuch-show-max-text-part-size)))
|
notmuch-show-max-text-part-size)))
|
||||||
|
(deep (and notmuch-show-depth-limit
|
||||||
|
(> depth notmuch-show-depth-limit)))
|
||||||
(beg (point))
|
(beg (point))
|
||||||
;; This default header-p function omits the part button for
|
;; This default header-p function omits the part button for
|
||||||
;; the first (or only) part if this is text/plain.
|
;; the first (or only) part if this is text/plain.
|
||||||
(button (and (funcall notmuch-show-insert-header-p-function part hide)
|
(button (and (or deep
|
||||||
|
(funcall notmuch-show-insert-header-p-function part hide))
|
||||||
(notmuch-show-insert-part-header
|
(notmuch-show-insert-part-header
|
||||||
nth mime-type
|
nth mime-type
|
||||||
(and content-type (downcase content-type))
|
(and content-type (downcase content-type))
|
||||||
(plist-get part :filename))))
|
(plist-get part :filename))))
|
||||||
;; Hide the part initially if HIDE is t, or if it is too long
|
;; Hide the part initially if HIDE is t, or if it is too long/deep
|
||||||
;; and we have a button to allow toggling.
|
;; and we have a button to allow toggling.
|
||||||
(show-part (not (or (equal hide t)
|
(show-part (not (or (equal hide t)
|
||||||
|
(and deep button)
|
||||||
(and long button))))
|
(and long button))))
|
||||||
(content-beg (point)))
|
(content-beg (point)))
|
||||||
;; Store the computed mime-type for later use (e.g. by attachment handlers).
|
;; Store the computed mime-type for later use (e.g. by attachment handlers).
|
||||||
|
|
|
@ -91,6 +91,24 @@ test_emacs '(let ((notmuch-show-only-matching-messages t))
|
||||||
(test-visible-output))'
|
(test-visible-output))'
|
||||||
test_expect_equal_file $EXPECTED/notmuch-show-elide-non-matching-messages-on OUTPUT
|
test_expect_equal_file $EXPECTED/notmuch-show-elide-non-matching-messages-on OUTPUT
|
||||||
|
|
||||||
|
test_begin_subtest "Hide bodies of messages by depth"
|
||||||
|
test_emacs '(let ((notmuch-show-depth-limit -1))
|
||||||
|
(notmuch-search "thread:{id:87ocn0qh6d.fsf@yoom.home.cworth.org}")
|
||||||
|
(notmuch-test-wait)
|
||||||
|
(notmuch-search-show-thread)
|
||||||
|
(notmuch-test-wait)
|
||||||
|
(test-visible-output))'
|
||||||
|
test_expect_equal_file $EXPECTED/notmuch-show-depth OUTPUT
|
||||||
|
|
||||||
|
test_begin_subtest "Hide bodies of messages (depth > 1)"
|
||||||
|
test_emacs '(let ((notmuch-show-depth-limit 1))
|
||||||
|
(notmuch-search "thread:{id:87ocn0qh6d.fsf@yoom.home.cworth.org}")
|
||||||
|
(notmuch-test-wait)
|
||||||
|
(notmuch-search-show-thread)
|
||||||
|
(notmuch-test-wait)
|
||||||
|
(test-visible-output))'
|
||||||
|
test_expect_equal_file $EXPECTED/notmuch-show-depth-1 OUTPUT
|
||||||
|
|
||||||
test_begin_subtest "notmuch-show: elide non-matching messages (w/ notmuch-show-toggle-elide-non-matching)"
|
test_begin_subtest "notmuch-show: elide non-matching messages (w/ notmuch-show-toggle-elide-non-matching)"
|
||||||
test_emacs '(let ((notmuch-show-only-matching-messages nil))
|
test_emacs '(let ((notmuch-show-only-matching-messages nil))
|
||||||
(notmuch-search "from:lars@seas.harvard.edu and subject:\"Maildir storage\"")
|
(notmuch-search "from:lars@seas.harvard.edu and subject:\"Maildir storage\"")
|
||||||
|
|
44
test/emacs-show.expected-output/notmuch-show-depth
Normal file
44
test/emacs-show.expected-output/notmuch-show-depth
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
Lars Kellogg-Stedman <lars@seas.harvard.edu> (2009-11-17) (inbox signed)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 14:00:54 -0500
|
||||||
|
|
||||||
|
[ multipart/mixed (hidden) ]
|
||||||
|
Mikhail Gusarov <dottedmag@dottedmag.net> (2009-11-17) (inbox signed unread)
|
||||||
|
Subject: Re: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Wed, 18 Nov 2009 01:02:38 +0600
|
||||||
|
|
||||||
|
[ multipart/mixed (hidden) ]
|
||||||
|
Lars Kellogg-Stedman <lars@seas.harvard.edu> (2009-11-17) (inbox signed)
|
||||||
|
Subject: Re: [notmuch] Working with Maildir storage?
|
||||||
|
To: Mikhail Gusarov <dottedmag@dottedmag.net>
|
||||||
|
Cc: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 15:33:01 -0500
|
||||||
|
|
||||||
|
[ multipart/mixed (hidden) ]
|
||||||
|
Mikhail Gusarov <dottedmag@dottedmag.net> (2009-11-17) (inbox unread)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Wed, 18 Nov 2009 02:50:48 +0600
|
||||||
|
|
||||||
|
[ text/plain (hidden) ]
|
||||||
|
Keith Packard <keithp@keithp.com> (2009-11-17) (inbox unread)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 13:24:13 -0800
|
||||||
|
|
||||||
|
[ text/plain (hidden) ]
|
||||||
|
Lars Kellogg-Stedman <lars@seas.harvard.edu> (2009-11-18) (inbox signed unread)
|
||||||
|
Subject: Re: [notmuch] Working with Maildir storage?
|
||||||
|
To: Keith Packard <keithp@keithp.com>
|
||||||
|
Cc: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 19:50:40 -0500
|
||||||
|
|
||||||
|
[ multipart/mixed (hidden) ]
|
||||||
|
Carl Worth <cworth@cworth.org> (2009-11-18) (inbox unread)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Wed, 18 Nov 2009 02:08:10 -0800
|
||||||
|
|
||||||
|
[ text/plain (hidden) ]
|
119
test/emacs-show.expected-output/notmuch-show-depth-1
Normal file
119
test/emacs-show.expected-output/notmuch-show-depth-1
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
Lars Kellogg-Stedman <lars@seas.harvard.edu> (2009-11-17) (inbox signed)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 14:00:54 -0500
|
||||||
|
|
||||||
|
[ multipart/mixed ]
|
||||||
|
[ multipart/signed ]
|
||||||
|
[ Unknown key ID 0xD74695063141ACD8 or unsupported algorithm ]
|
||||||
|
[ text/plain ]
|
||||||
|
I saw the LWN article and decided to take a look at notmuch. I'm
|
||||||
|
currently using mutt and mairix to index and read a collection of
|
||||||
|
Maildir mail folders (around 40,000 messages total).
|
||||||
|
|
||||||
|
notmuch indexed the messages without complaint, but my attempt at
|
||||||
|
searching bombed out. Running, for example:
|
||||||
|
|
||||||
|
notmuch search storage
|
||||||
|
|
||||||
|
Resulted in 4604 lines of errors along the lines of:
|
||||||
|
|
||||||
|
Error opening
|
||||||
|
/home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostname,U=3026:2,S:
|
||||||
|
Too many open files
|
||||||
|
|
||||||
|
I'm curious if this is expected behavior (i.e., notmuch does not work
|
||||||
|
with Maildir) or if something else is going on.
|
||||||
|
|
||||||
|
Cheers,
|
||||||
|
|
||||||
|
[ 4-line signature. Click/Enter to show. ]
|
||||||
|
[ application/pgp-signature ]
|
||||||
|
[ text/plain ]
|
||||||
|
[ 4-line signature. Click/Enter to show. ]
|
||||||
|
Mikhail Gusarov <dottedmag@dottedmag.net> (2009-11-17) (inbox signed unread)
|
||||||
|
Subject: Re: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Wed, 18 Nov 2009 01:02:38 +0600
|
||||||
|
|
||||||
|
[ multipart/mixed ]
|
||||||
|
[ multipart/signed ]
|
||||||
|
[ Unknown key ID 0x9D20F6503E338888 or unsupported algorithm ]
|
||||||
|
[ text/plain ]
|
||||||
|
|
||||||
|
Twas brillig at 14:00:54 17.11.2009 UTC-05 when lars@seas.harvard.edu did
|
||||||
|
gyre and gimble:
|
||||||
|
|
||||||
|
LK> Resulted in 4604 lines of errors along the lines of:
|
||||||
|
|
||||||
|
LK> Error opening
|
||||||
|
LK>
|
||||||
|
/home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostname,U=3026:2,S:
|
||||||
|
LK> Too many open files
|
||||||
|
|
||||||
|
See the patch just posted here.
|
||||||
|
|
||||||
|
[ 2-line signature. Click/Enter to show. ]
|
||||||
|
[ application/pgp-signature ]
|
||||||
|
[ text/plain ]
|
||||||
|
[ 4-line signature. Click/Enter to show. ]
|
||||||
|
Lars Kellogg-Stedman <lars@seas.harvard.edu> (2009-11-17) (inbox signed)
|
||||||
|
Subject: Re: [notmuch] Working with Maildir storage?
|
||||||
|
To: Mikhail Gusarov <dottedmag@dottedmag.net>
|
||||||
|
Cc: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 15:33:01 -0500
|
||||||
|
|
||||||
|
[ multipart/mixed (hidden) ]
|
||||||
|
Mikhail Gusarov <dottedmag@dottedmag.net> (2009-11-17) (inbox unread)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Wed, 18 Nov 2009 02:50:48 +0600
|
||||||
|
|
||||||
|
[ text/plain (hidden) ]
|
||||||
|
Keith Packard <keithp@keithp.com> (2009-11-17) (inbox unread)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 13:24:13 -0800
|
||||||
|
|
||||||
|
[ text/plain (hidden) ]
|
||||||
|
Lars Kellogg-Stedman <lars@seas.harvard.edu> (2009-11-18) (inbox signed unread)
|
||||||
|
Subject: Re: [notmuch] Working with Maildir storage?
|
||||||
|
To: Keith Packard <keithp@keithp.com>
|
||||||
|
Cc: notmuch@notmuchmail.org
|
||||||
|
Date: Tue, 17 Nov 2009 19:50:40 -0500
|
||||||
|
|
||||||
|
[ multipart/mixed (hidden) ]
|
||||||
|
Carl Worth <cworth@cworth.org> (2009-11-18) (inbox unread)
|
||||||
|
Subject: [notmuch] Working with Maildir storage?
|
||||||
|
To: notmuch@notmuchmail.org
|
||||||
|
Date: Wed, 18 Nov 2009 02:08:10 -0800
|
||||||
|
|
||||||
|
On Tue, 17 Nov 2009 14:00:54 -0500, Lars Kellogg-Stedman <lars at
|
||||||
|
seas.harvard.edu> wrote:
|
||||||
|
> I saw the LWN article and decided to take a look at notmuch. I'm
|
||||||
|
> currently using mutt and mairix to index and read a collection of
|
||||||
|
> Maildir mail folders (around 40,000 messages total).
|
||||||
|
|
||||||
|
Welcome, Lars!
|
||||||
|
|
||||||
|
I hadn't even seen that Keith's blog post had been picked up by lwn.net.
|
||||||
|
That's very interesting. So, thanks for coming and trying out notmuch.
|
||||||
|
|
||||||
|
> Error opening
|
||||||
|
> /home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostname,U=3026:2,S:
|
||||||
|
> Too many open files
|
||||||
|
|
||||||
|
Sadly, the lwn article coincided with me having just introduced this
|
||||||
|
bug, and then getting on a Trans-Atlantic flight. So I fixed the bug
|
||||||
|
fairly quickly, but there was quite a bit of latency before I could push
|
||||||
|
the fix out. It should be fixed now.
|
||||||
|
|
||||||
|
> I'm curious if this is expected behavior (i.e., notmuch does not work
|
||||||
|
> with Maildir) or if something else is going on.
|
||||||
|
|
||||||
|
Notmuch works just fine with maildir---it's one of the things that it
|
||||||
|
likes the best.
|
||||||
|
|
||||||
|
Happy hacking,
|
||||||
|
|
||||||
|
-Carl
|
Loading…
Reference in a new issue