]> git.notmuchmail.org Git - notmuch/commitdiff
emacs-show: open excluded matches if no other matches
authorMark Walters <markwalters1009@gmail.com>
Thu, 15 Mar 2012 18:28:10 +0000 (18:28 +0000)
committerDavid Bremner <bremner@debian.org>
Sun, 29 Apr 2012 18:54:13 +0000 (15:54 -0300)
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.

emacs/notmuch-show.el

index 1e55099820cf76eb337486c7c84ac945ec86b3df..2c0b767f6964f39d93f04006126ba07823a16fca 100644 (file)
@@ -1568,6 +1568,11 @@ to show, nil otherwise."
          (notmuch-show-message-adjust))
       (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 ()
   "Move to the first open message and mark it read"
   (goto-char (point-min))
@@ -1575,9 +1580,14 @@ to show, nil otherwise."
       (notmuch-show-mark-read)
     (notmuch-show-next-open-message))
   (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))
-    (unless (notmuch-show-get-prop :match)
-      (notmuch-show-next-matching-message))))
+    (if (notmuch-show-message-visible-p)
+       (notmuch-show-mark-read)
+      (notmuch-show-next-open-message))))
 
 (defun notmuch-show-previous-open-message ()
   "Show the previous open message."