These two functions behave like gmail's collapse all and expand all commands. notmuch-show-collapse-all is bound to 'B' but notmuch-show-expand-all has no keybindig because I thought it is not often used.
Signed-off-by: Kan-Ru Chen <kanru at kanru.info> --- notmuch.el | 25 +++++++++++++++++++++++++ 1 files changed, 25 insertions(+), 0 deletions(-) diff --git a/notmuch.el b/notmuch.el index 2526020..5b8513c 100644 --- a/notmuch.el +++ b/notmuch.el @@ -63,6 +63,7 @@ (define-key map "a" 'notmuch-show-archive-thread) (define-key map "A" 'notmuch-show-mark-read-then-archive-thread) (define-key map "b" 'notmuch-show-toggle-current-body) + (define-key map "B" 'notmuch-show-collapse-all) (define-key map "f" 'notmuch-show-forward-current) (define-key map "h" 'notmuch-show-toggle-current-header) (define-key map "m" 'message-mail) @@ -582,6 +583,30 @@ which this thread was originally shown." (push-button)) ) +(defun notmuch-show-collapse-all () + (interactive) + (save-excursion + (beginning-of-buffer) + (while (not (notmuch-show-last-message-p)) + (unless (button-at (point)) + (notmuch-show-next-button)) + (let ((invis-spec (button-get (button-at (point)) 'invisibility-spec))) + (add-to-invisibility-spec invis-spec)) + (notmuch-show-next-open-message) + ))) + +(defun notmuch-show-expand-all () + (interactive) + (save-excursion + (beginning-of-buffer) + (while (not (notmuch-show-last-message-p)) + (unless (button-at (point)) + (notmuch-show-next-button)) + (let ((invis-spec (button-get (button-at (point)) 'invisibility-spec))) + (remove-from-invisibility-spec invis-spec)) + (notmuch-show-next-message) + ))) + (define-button-type 'notmuch-button-invisibility-toggle-type 'action 'notmuch-toggle-invisible-action 'follow-link t) (define-button-type 'notmuch-button-citation-toggle-type 'help-echo "mouse-1, RET: Show citation" :supertype 'notmuch-button-invisibility-toggle-type) -- 1.6.5.3