(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
`(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)))
(define-key map (kbd "M-TAB") (notmuch-tree-to-message-pane #'notmuch-show-previous-button))
(define-key map (kbd "<backtab>") (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))
(define-key map "x" 'notmuch-tree-quit)
(define-key map "A" 'notmuch-tree-archive-thread)
(define-key map "a" 'notmuch-tree-archive-message-then-next)
- (define-key map "=" 'notmuch-tree-refresh-view)
(define-key map "z" 'notmuch-tree-to-tree)
(define-key map "n" 'notmuch-tree-next-matching-message)
(define-key map "p" 'notmuch-tree-prev-matching-message)
(define-key map "P" 'notmuch-tree-prev-message)
(define-key map (kbd "M-p") 'notmuch-tree-prev-thread)
(define-key map (kbd "M-n") 'notmuch-tree-next-thread)
+ (define-key map "k" 'notmuch-tag-jump)
(define-key map "-" 'notmuch-tree-remove-tag)
(define-key map "+" 'notmuch-tree-add-tag)
(define-key map "*" 'notmuch-tree-tag-thread)
(defun notmuch-tree-tag-update-display (&optional tag-changes)
"Update display for TAG-CHANGES to current message.
-Does NOT change the database."
+Updates the message in the message pane if appropriate, but does
+NOT change the database."
(let* ((current-tags (notmuch-tree-get-tags))
- (new-tags (notmuch-update-tags current-tags tag-changes)))
+ (new-tags (notmuch-update-tags current-tags tag-changes))
+ (tree-msg-id (notmuch-tree-get-message-id)))
(unless (equal current-tags new-tags)
(notmuch-tree-set-tags new-tags)
- (notmuch-tree-refresh-result))))
+ (notmuch-tree-refresh-result)
+ (when (window-live-p notmuch-tree-message-window)
+ (with-selected-window notmuch-tree-message-window
+ (when (string= tree-msg-id (notmuch-show-get-message-id))
+ (notmuch-show-update-tags new-tags)))))))
(defun notmuch-tree-tag (tag-changes)
"Change tags for the current message"