emacs-show: open excluded matches if no other matches

Currently emacs show does not open matching but excluded
messages. This is normally the desired behaviour but is probably not
ideal if only excluded messages match. This patch opens all the
matching (necessarily excluded) messages in this case and goes to the
first one.
This commit is contained in:
Mark Walters 2012-03-15 18:28:10 +00:00 committed by David Bremner
parent 77e128a0f0
commit 94250ac2c5

View file

@ -1568,6 +1568,11 @@ to show, nil otherwise."
(notmuch-show-message-adjust)) (notmuch-show-message-adjust))
(goto-char (point-max))))) (goto-char (point-max)))))
(defun notmuch-show-open-if-matched ()
"Open a message if it is matched (whether or not excluded)."
(let ((props (notmuch-show-get-message-properties)))
(notmuch-show-message-visible props (plist-get props :match))))
(defun notmuch-show-goto-first-wanted-message () (defun notmuch-show-goto-first-wanted-message ()
"Move to the first open message and mark it read" "Move to the first open message and mark it read"
(goto-char (point-min)) (goto-char (point-min))
@ -1575,9 +1580,14 @@ to show, nil otherwise."
(notmuch-show-mark-read) (notmuch-show-mark-read)
(notmuch-show-next-open-message)) (notmuch-show-next-open-message))
(when (eobp) (when (eobp)
;; There are no matched non-excluded messages so open all matched
;; (necessarily excluded) messages and go to the first.
(notmuch-show-mapc 'notmuch-show-open-if-matched)
(force-window-update)
(goto-char (point-min)) (goto-char (point-min))
(unless (notmuch-show-get-prop :match) (if (notmuch-show-message-visible-p)
(notmuch-show-next-matching-message)))) (notmuch-show-mark-read)
(notmuch-show-next-open-message))))
(defun notmuch-show-previous-open-message () (defun notmuch-show-previous-open-message ()
"Show the previous open message." "Show the previous open message."