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:
parent
5aaeaa406a
commit
40d13cc87f
2 changed files with 15 additions and 7 deletions
|
@ -41,4 +41,14 @@
|
||||||
;; Insert TODO comments
|
;; Insert TODO comments
|
||||||
(global-set-key (kbd "C-c t") 'insert-todo-comment)
|
(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)
|
(provide 'bindings)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
(require 'chart)
|
(require 'chart)
|
||||||
(require 'dash)
|
(require 'dash)
|
||||||
|
(require 'map)
|
||||||
|
|
||||||
(defun load-file-if-exists (filename)
|
(defun load-file-if-exists (filename)
|
||||||
(if (file-exists-p filename)
|
(if (file-exists-p filename)
|
||||||
|
@ -289,17 +290,14 @@
|
||||||
(-map #'car tag-counts) "Tag:"
|
(-map #'car tag-counts) "Tag:"
|
||||||
(-map #'cdr tag-counts) "Count:")))
|
(-map #'cdr tag-counts) "Count:")))
|
||||||
|
|
||||||
(defun notmuch-show-open-or-close-subthread ()
|
(defun notmuch-show-open-or-close-subthread (&optional open)
|
||||||
"Open or close the subthread from (and including) the message
|
"Open or close the subthread from (and including) the message at point."
|
||||||
at point. Opens by default, closes if the prefix argument is
|
|
||||||
set."
|
|
||||||
(interactive)
|
(interactive)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(let ((current-depth (map-elt (notmuch-show-get-message-properties) :depth 0)))
|
(let ((current-depth (map-elt (notmuch-show-get-message-properties) :depth 0)))
|
||||||
(loop do (notmuch-show-message-visible (notmuch-show-get-message-properties)
|
(loop do (notmuch-show-message-visible (notmuch-show-get-message-properties) open)
|
||||||
(not current-prefix-arg))
|
|
||||||
until (or (not (notmuch-show-goto-message-next))
|
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))
|
(force-window-update))
|
||||||
|
|
||||||
(provide 'functions)
|
(provide 'functions)
|
||||||
|
|
Loading…
Reference in a new issue