X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=emacs%2Fnotmuch-tree.el;h=6812d7e9204e5918d377b02a4298d099cb6b90a1;hp=1ab0810d59270809173be0957818c621a17a805d;hb=b6f87c3085e25e5bf65a4f956af8846bc0681c52;hpb=608a3cb2319f5eb7e82e09f380d9261e3d1bf3a0 diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el index 1ab0810d..6812d7e9 100644 --- a/emacs/notmuch-tree.el +++ b/emacs/notmuch-tree.el @@ -209,6 +209,13 @@ open (if the message pane is closed it does nothing)." (with-selected-window notmuch-tree-message-window (call-interactively #',func))))) +(defun notmuch-tree-inherit-from-message-pane (sym) + "Return value of SYM in message-pane if open, or tree-pane if not" + (if (window-live-p notmuch-tree-message-window) + (with-selected-window notmuch-tree-message-window + (symbol-value sym)) + (symbol-value sym))) + (defun notmuch-tree-button-activate (&optional button) "Activate BUTTON or button at point @@ -226,8 +233,10 @@ FUNC." `(lambda () ,(concat "(Close message pane and) " (documentation func t)) (interactive) - (notmuch-tree-close-message-window) - (call-interactively #',func))) + (let ((notmuch-show-process-crypto + (notmuch-tree-inherit-from-message-pane 'notmuch-show-process-crypto))) + (notmuch-tree-close-message-window) + (call-interactively #',func)))) (defvar notmuch-tree-mode-map (let ((map (make-sparse-keymap))) @@ -257,7 +266,7 @@ FUNC." (define-key map (kbd "M-TAB") (notmuch-tree-to-message-pane #'notmuch-show-previous-button)) (define-key map (kbd "") (notmuch-tree-to-message-pane #'notmuch-show-previous-button)) (define-key map (kbd "TAB") (notmuch-tree-to-message-pane #'notmuch-show-next-button)) - (define-key map "e" (notmuch-tree-to-message-pane #'notmuch-tree-button-activate)) + (define-key map "$" (notmuch-tree-to-message-pane #'notmuch-show-toggle-process-crypto)) ;; bindings from show (or elsewhere) but we close the message pane first. (define-key map "f" (notmuch-tree-close-message-pane-and #'notmuch-show-forward-message)) @@ -284,6 +293,7 @@ FUNC." (define-key map "*" 'notmuch-tree-tag-thread) (define-key map " " 'notmuch-tree-scroll-or-next) (define-key map (kbd "DEL") 'notmuch-tree-scroll-message-window-back) + (define-key map "e" 'notmuch-tree-resume-message) map)) (fset 'notmuch-tree-mode-map notmuch-tree-mode-map) @@ -396,6 +406,15 @@ NOT change the database." (list (notmuch-read-tag-changes (notmuch-tree-get-tags) "Tag message" "-"))) (notmuch-tree-tag tag-changes)) +(defun notmuch-tree-resume-message () + "Resume EDITING the current draft message." + (interactive) + (notmuch-tree-close-message-window) + (let ((id (notmuch-tree-get-message-id))) + (if id + (notmuch-draft-resume id) + (message "No message to resume!")))) + ;; The next two functions close the message window before calling ;; notmuch-search or notmuch-tree but they do so after the user has ;; entered the query (in case the user was basing the query on @@ -898,7 +917,7 @@ the same as for the function notmuch-tree." (notmuch-tag-clear-cache) (let ((proc (notmuch-start-notmuch "notmuch-tree" (current-buffer) #'notmuch-tree-process-sentinel - "show" "--body=false" "--format=sexp" + "show" "--body=false" "--format=sexp" "--format-version=3" message-arg search-args)) ;; Use a scratch buffer to accumulate partial output. ;; This buffer will be killed by the sentinel, which