]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.el
notmuch.el: Move to first unread message on notmuch-show.
[notmuch] / notmuch.el
index 16ca037ed5573757280116f82e04b72503c856ed..9bf272bed473fed9bec6c52ff404da42fa8b259d 100644 (file)
@@ -150,12 +150,13 @@ by searching backward)."
 (defun notmuch-show-next-message ()
   "Advance to the beginning of the next message in the buffer.
 
-Moves to the beginning of the current message if already on the
-last message in the buffer."
+Moves to the end of the buffer if already on the last message in
+the buffer."
   (interactive)
   (notmuch-show-move-to-current-message-summary-line)
-  (re-search-forward notmuch-show-message-begin-regexp nil t)
-  (notmuch-show-move-to-current-message-summary-line)
+  (if (re-search-forward notmuch-show-message-begin-regexp nil t)
+      (notmuch-show-move-to-current-message-summary-line)
+    (goto-char (point-max)))
   (recenter 0))
 
 (defun notmuch-show-find-next-message ()
@@ -171,6 +172,15 @@ message in the buffer."
       (notmuch-show-next-message)
       (point))))
 
+(defun notmuch-show-next-unread-message ()
+  "Advance to the beginning of the next unread message in the buffer.
+
+Does nothing if there are no more unread messages past the
+current point."
+  (while (and (not (eobp))
+             (not (member "unread" (notmuch-show-get-tags))))
+    (notmuch-show-next-message)))
+
 (defun notmuch-show-previous-message ()
   "Backup to the beginning of the previous message in the buffer.
 
@@ -218,9 +228,10 @@ which this thread was originally shown."
     (if (and (not unread)
             (equal next (point)))
        (notmuch-show-archive-thread)
-      (if (< (notmuch-show-find-next-message) (window-end))
-         (notmuch-show-mark-read-then-next-message)
-       (scroll-up nil)))))
+      (if (and (> next (window-end))
+              (< next (point-max)))
+         (scroll-up nil)
+       (notmuch-show-mark-read-then-next-message)))))
 
 (defun notmuch-show-markup-citations-region (beg end)
   (goto-char beg)
@@ -398,6 +409,7 @@ thread from that buffer can be show when done with this one)."
        (call-process "notmuch" nil t nil "show" thread-id)
        (notmuch-show-markup-messages)
        )
+      (notmuch-show-next-unread-message)
       )))
 
 (defvar notmuch-search-mode-map