The magic of the space bar is all about unread messages, so there's no
reason for it to advance to messages that have already been read.
Similarly, we now remove any magic from (n)ext so that it simply
advances to the next message without marking anything read, (which
makes it symmetrical with (p)revious).
(define-key map "b" 'notmuch-show-toggle-body-read-visible)
(define-key map "c" 'notmuch-show-toggle-citations-visible)
(define-key map "h" 'notmuch-show-toggle-headers-visible)
(define-key map "b" 'notmuch-show-toggle-body-read-visible)
(define-key map "c" 'notmuch-show-toggle-citations-visible)
(define-key map "h" 'notmuch-show-toggle-headers-visible)
- (define-key map "n" 'notmuch-show-mark-read-then-next-message)
+ (define-key map "n" 'notmuch-show-next-message)
(define-key map "p" 'notmuch-show-previous-message)
(define-key map "q" 'kill-this-buffer)
(define-key map "s" 'notmuch-show-toggle-signatures-visible)
(define-key map "p" 'notmuch-show-previous-message)
(define-key map "q" 'kill-this-buffer)
(define-key map "s" 'notmuch-show-toggle-signatures-visible)
(defun notmuch-show-find-next-message ()
"Returns the position of the next message in the buffer.
(defun notmuch-show-find-next-message ()
"Returns the position of the next message in the buffer.
-Or the beginning of the current message if already within the last
-message in the buffer."
+Or the end of the buffer if already within the last message in
+the buffer."
; save-excursion doesn't save our window position
; save-window-excursion doesn't save point
; Looks like we have to use both.
; save-excursion doesn't save our window position
; save-window-excursion doesn't save point
; Looks like we have to use both.
(not (member "unread" (notmuch-show-get-tags))))
(notmuch-show-next-message)))
(not (member "unread" (notmuch-show-get-tags))))
(notmuch-show-next-message)))
+(defun notmuch-show-find-next-unread-message ()
+ "Returns the position of the next message in the buffer.
+
+Returns the current point if there are no more unread messages
+past the current point."
+ ; save-excursion doesn't save our window position
+ ; save-window-excursion doesn't save point
+ ; Looks like we have to use both.
+ (save-excursion
+ (save-window-excursion
+ (notmuch-show-next-unread-message)
+ (point))))
+
(defun notmuch-show-previous-message ()
"Backup to the beginning of the previous message in the buffer.
(defun notmuch-show-previous-message ()
"Backup to the beginning of the previous message in the buffer.
-(defun notmuch-show-mark-read-then-next-message ()
- "Remove unread tag from current message, then advance to next message."
+(defun notmuch-show-mark-read-then-next-unread-message ()
+ "Remove unread tag from current message, then advance to next unread message."
(interactive)
(notmuch-show-remove-tag "unread")
(interactive)
(notmuch-show-remove-tag "unread")
- (notmuch-show-next-message))
+ (notmuch-show-next-unread-message))
(defun notmuch-show-advance-marking-read-and-archiving ()
"Advance through buffer, marking read and archiving.
(defun notmuch-show-advance-marking-read-and-archiving ()
"Advance through buffer, marking read and archiving.
this buffer, and display the next thread from the search from
which this thread was originally shown."
(interactive)
this buffer, and display the next thread from the search from
which this thread was originally shown."
(interactive)
- (let ((next (notmuch-show-find-next-message))
+ (let ((next (notmuch-show-find-next-unread-message))
(unread (member "unread" (notmuch-show-get-tags))))
(if (and (not unread)
(equal next (point)))
(unread (member "unread" (notmuch-show-get-tags))))
(if (and (not unread)
(equal next (point)))
(if (and (> next (window-end))
(< next (point-max)))
(scroll-up nil)
(if (and (> next (window-end))
(< next (point-max)))
(scroll-up nil)
- (notmuch-show-mark-read-then-next-message)))))
+ (notmuch-show-mark-read-then-next-unread-message)))))
(defun notmuch-show-markup-citations-region (beg end)
(goto-char beg)
(defun notmuch-show-markup-citations-region (beg end)
(goto-char beg)