emacs: add notmuch-show-refresh-view function

This function, like the equivalent for notmuch-search, just refreshes
the current show view.  Like in notmuch-search, this new function is
bound to "=".  If a prefix is given then the redisplay happens with the
crypto-switch set, which displays the thread with the opposite logic
of whatever is set in the notmuch-crypto-process-mime customization
variable.
This commit is contained in:
Jameson Graef Rollins 2011-05-28 17:09:43 -07:00 committed by David Bremner
parent d1519d256a
commit 76fdca8f77

View file

@ -780,8 +780,14 @@ current buffer, if possible."
"Insert the forest of threads FOREST." "Insert the forest of threads FOREST."
(mapc '(lambda (thread) (notmuch-show-insert-thread thread 0)) forest)) (mapc '(lambda (thread) (notmuch-show-insert-thread thread 0)) forest))
(defvar notmuch-show-thread-id nil)
(make-variable-buffer-local 'notmuch-show-thread-id)
(defvar notmuch-show-parent-buffer nil) (defvar notmuch-show-parent-buffer nil)
(make-variable-buffer-local 'notmuch-show-parent-buffer) (make-variable-buffer-local 'notmuch-show-parent-buffer)
(defvar notmuch-show-query-context nil)
(make-variable-buffer-local 'notmuch-show-query-context)
(defvar notmuch-show-buffer-name nil)
(make-variable-buffer-local 'notmuch-show-buffer-name)
;;;###autoload ;;;###autoload
(defun notmuch-show (thread-id &optional parent-buffer query-context buffer-name crypto-switch) (defun notmuch-show (thread-id &optional parent-buffer query-context buffer-name crypto-switch)
@ -801,17 +807,23 @@ which the message thread is shown. If it is nil (which occurs
when the command is called interactively) the argument to the when the command is called interactively) the argument to the
function is used. " function is used. "
(interactive "sNotmuch show: ") (interactive "sNotmuch show: ")
(let ((buffer (get-buffer-create (generate-new-buffer-name (let* ((buffer-name (generate-new-buffer-name
(or buffer-name (or buffer-name
(concat "*notmuch-" thread-id "*"))))) (concat "*notmuch-" thread-id "*"))))
(buffer (get-buffer-create buffer-name))
(process-crypto (if crypto-switch (process-crypto (if crypto-switch
(not notmuch-crypto-process-mime) (not notmuch-crypto-process-mime)
notmuch-crypto-process-mime)) notmuch-crypto-process-mime))
(inhibit-read-only t)) (inhibit-read-only t))
(switch-to-buffer buffer) (switch-to-buffer buffer)
(notmuch-show-mode) (notmuch-show-mode)
(setq notmuch-show-thread-id thread-id)
(setq notmuch-show-parent-buffer parent-buffer) (setq notmuch-show-parent-buffer parent-buffer)
(setq notmuch-show-query-context query-context)
(setq notmuch-show-buffer-name buffer-name)
(setq notmuch-show-process-crypto process-crypto) (setq notmuch-show-process-crypto process-crypto)
(erase-buffer) (erase-buffer)
(goto-char (point-min)) (goto-char (point-min))
(save-excursion (save-excursion
@ -844,6 +856,21 @@ function is used. "
(notmuch-show-mark-read))) (notmuch-show-mark-read)))
(defun notmuch-show-refresh-view (&optional crypto-switch)
"Refresh the current view (with crypto switch if prefix given).
Kills the current buffer and reruns notmuch show with the same
thread id. If a prefix is given, the current thread is
redisplayed with the crypto switch activated, which switch the
logic of the notmuch-crypto-process-mime customization variable."
(interactive "P")
(let ((thread-id notmuch-show-thread-id)
(parent-buffer notmuch-show-parent-buffer)
(query-context notmuch-show-query-context)
(buffer-name notmuch-show-buffer-name))
(notmuch-kill-this-buffer)
(notmuch-show thread-id parent-buffer query-context buffer-name crypto-switch)))
(defvar notmuch-show-stash-map (defvar notmuch-show-stash-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(define-key map "c" 'notmuch-show-stash-cc) (define-key map "c" 'notmuch-show-stash-cc)
@ -875,6 +902,7 @@ function is used. "
(define-key map "V" 'notmuch-show-view-raw-message) (define-key map "V" 'notmuch-show-view-raw-message)
(define-key map "v" 'notmuch-show-view-all-mime-parts) (define-key map "v" 'notmuch-show-view-all-mime-parts)
(define-key map "c" 'notmuch-show-stash-map) (define-key map "c" 'notmuch-show-stash-map)
(define-key map "=" 'notmuch-show-refresh-view)
(define-key map "h" 'notmuch-show-toggle-headers) (define-key map "h" 'notmuch-show-toggle-headers)
(define-key map "-" 'notmuch-show-remove-tag) (define-key map "-" 'notmuch-show-remove-tag)
(define-key map "+" 'notmuch-show-add-tag) (define-key map "+" 'notmuch-show-add-tag)