feat(tools/emacs): Bindings for (un)collapsing notmuch subthreads

Modifies notmuch-show-open-or-close-subthread to take a parameter
instead of using prefix to toggle the argument, and binds that
function to C-, and C-. in notmuch-show-mode-map to enable convenient
collapsing/uncollapsing of subthreads from point.
This commit is contained in:
Vincent Ambo 2020-04-02 01:35:16 +01:00
parent 5aaeaa406a
commit 40d13cc87f
2 changed files with 15 additions and 7 deletions

View file

@ -41,4 +41,14 @@
;; Insert TODO comments
(global-set-key (kbd "C-c t") 'insert-todo-comment)
;; Add subthread collapsing to notmuch-show.
;;
;; C-, closes a thread, C-. opens a thread. This mirrors stepping
;; in/out of definitions.
(define-key notmuch-show-mode-map (kbd "C-,") 'notmuch-show-open-or-close-subthread)
(define-key notmuch-show-mode-map (kbd "C-.")
(lambda ()
(interactive)
(notmuch-show-open-or-close-subthread t))) ;; open
(provide 'bindings)

View file

@ -1,5 +1,6 @@
(require 'chart)
(require 'dash)
(require 'map)
(defun load-file-if-exists (filename)
(if (file-exists-p filename)
@ -289,17 +290,14 @@
(-map #'car tag-counts) "Tag:"
(-map #'cdr tag-counts) "Count:")))
(defun notmuch-show-open-or-close-subthread ()
"Open or close the subthread from (and including) the message
at point. Opens by default, closes if the prefix argument is
set."
(defun notmuch-show-open-or-close-subthread (&optional open)
"Open or close the subthread from (and including) the message at point."
(interactive)
(save-excursion
(let ((current-depth (map-elt (notmuch-show-get-message-properties) :depth 0)))
(loop do (notmuch-show-message-visible (notmuch-show-get-message-properties)
(not current-prefix-arg))
(loop do (notmuch-show-message-visible (notmuch-show-get-message-properties) open)
until (or (not (notmuch-show-goto-message-next))
(= (map-elt (notmuch-show-get-message-properties) :depth 0) current-depth)))))
(= (map-elt (notmuch-show-get-message-properties)) current-depth)))))
(force-window-update))
(provide 'functions)