emacs: show: recognize the exclude flag.

Show mode will recognize the exclude flag by not opening excluding
messages by default, and will start at the first matching non-excluded
message. If there are no matching non-excluded messages it will go to
the first matching (necessarily excluded) message.
This commit is contained in:
Mark Walters 2012-03-01 22:30:44 +00:00 committed by David Bremner
parent 7a1beb9e7c
commit 119a42571e

View file

@ -981,7 +981,8 @@ current buffer, if possible."
;; Message visibility depends on whether it matched the search ;; Message visibility depends on whether it matched the search
;; criteria. ;; criteria.
(notmuch-show-message-visible msg (plist-get msg :match)))) (notmuch-show-message-visible msg (and (plist-get msg :match)
(not (plist-get msg :excluded))))))
(defun notmuch-show-toggle-process-crypto () (defun notmuch-show-toggle-process-crypto ()
"Toggle the processing of cryptographic MIME parts." "Toggle the processing of cryptographic MIME parts."
@ -1081,11 +1082,7 @@ function is used."
notmuch-show-parent-buffer parent-buffer notmuch-show-parent-buffer parent-buffer
notmuch-show-query-context query-context) notmuch-show-query-context query-context)
(notmuch-show-build-buffer) (notmuch-show-build-buffer)
(notmuch-show-goto-first-wanted-message)))
;; Move to the first open message and mark it read
(if (notmuch-show-message-visible-p)
(notmuch-show-mark-read)
(notmuch-show-next-open-message))))
(defun notmuch-show-build-buffer () (defun notmuch-show-build-buffer ()
(let ((inhibit-read-only t)) (let ((inhibit-read-only t))
@ -1167,9 +1164,7 @@ reset based on the original query."
(notmuch-show-apply-state state) (notmuch-show-apply-state state)
;; We're resetting state, so navigate to the first open message ;; We're resetting state, so navigate to the first open message
;; and mark it read, just like opening a new show buffer. ;; and mark it read, just like opening a new show buffer.
(if (notmuch-show-message-visible-p) (notmuch-show-goto-first-wanted-message))))
(notmuch-show-mark-read)
(notmuch-show-next-open-message)))))
(defvar notmuch-show-stash-map (defvar notmuch-show-stash-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
@ -1601,6 +1596,29 @@ to show, nil otherwise."
(goto-char (point-max)))) (goto-char (point-max))))
r)) r))
(defun notmuch-show-next-matching-message ()
"Show the next matching message."
(interactive)
(let (r)
(while (and (setq r (notmuch-show-goto-message-next))
(not (notmuch-show-get-prop :match))))
(if r
(progn
(notmuch-show-mark-read)
(notmuch-show-message-adjust))
(goto-char (point-max)))))
(defun notmuch-show-goto-first-wanted-message ()
"Move to the first open message and mark it read"
(goto-char (point-min))
(if (notmuch-show-message-visible-p)
(notmuch-show-mark-read)
(notmuch-show-next-open-message))
(when (eobp)
(goto-char (point-min))
(unless (notmuch-show-get-prop :match)
(notmuch-show-next-matching-message))))
(defun notmuch-show-previous-open-message () (defun notmuch-show-previous-open-message ()
"Show the previous open message." "Show the previous open message."
(interactive) (interactive)