mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +01:00
emacs: Make 'n' and 'p' navigate only open messages.
And add new 'N' and 'P' keybindings for navigating through messages that are open or closed.
This commit is contained in:
parent
f99b46c607
commit
095a02211e
1 changed files with 42 additions and 11 deletions
53
notmuch.el
53
notmuch.el
|
@ -90,8 +90,10 @@
|
||||||
(define-key map "+" 'notmuch-show-add-tag)
|
(define-key map "+" 'notmuch-show-add-tag)
|
||||||
(define-key map "x" 'notmuch-show-archive-thread-then-exit)
|
(define-key map "x" 'notmuch-show-archive-thread-then-exit)
|
||||||
(define-key map "a" 'notmuch-show-archive-thread)
|
(define-key map "a" 'notmuch-show-archive-thread)
|
||||||
(define-key map "p" 'notmuch-show-previous-message)
|
(define-key map "P" 'notmuch-show-previous-message)
|
||||||
(define-key map "n" 'notmuch-show-next-message)
|
(define-key map "N" 'notmuch-show-next-message)
|
||||||
|
(define-key map "p" 'notmuch-show-previous-open-message)
|
||||||
|
(define-key map "n" 'notmuch-show-next-open-message)
|
||||||
(define-key map (kbd "DEL") 'notmuch-show-rewind)
|
(define-key map (kbd "DEL") 'notmuch-show-rewind)
|
||||||
(define-key map " " 'notmuch-show-advance-and-archive)
|
(define-key map " " 'notmuch-show-advance-and-archive)
|
||||||
map)
|
map)
|
||||||
|
@ -523,7 +525,7 @@ Returns nil if already on the last message in the buffer."
|
||||||
nil))
|
nil))
|
||||||
|
|
||||||
(defun notmuch-show-next-message ()
|
(defun notmuch-show-next-message ()
|
||||||
"Advance to the beginning of the next message in the buffer.
|
"Advance to the next message (whether open or closed)
|
||||||
and remove the unread tag from that message.
|
and remove the unread tag from that message.
|
||||||
|
|
||||||
Moves to the last visible character of the current message if
|
Moves to the last visible character of the current message if
|
||||||
|
@ -548,7 +550,7 @@ message if already within the last message in the buffer."
|
||||||
(point))))
|
(point))))
|
||||||
|
|
||||||
(defun notmuch-show-next-unread-message ()
|
(defun notmuch-show-next-unread-message ()
|
||||||
"Advance to the beginning of the next unread message in the buffer.
|
"Advance to the next unread message.
|
||||||
|
|
||||||
Moves to the last visible character of the current message if
|
Moves to the last visible character of the current message if
|
||||||
there are no more unread messages past the current point."
|
there are no more unread messages past the current point."
|
||||||
|
@ -561,17 +563,22 @@ there are no more unread messages past the current point."
|
||||||
(notmuch-show-mark-read))
|
(notmuch-show-mark-read))
|
||||||
|
|
||||||
(defun notmuch-show-next-open-message ()
|
(defun notmuch-show-next-open-message ()
|
||||||
"Advance to the next open message (that is, body is not invisible)."
|
"Advance to the next open message (that is, body is visible).
|
||||||
|
|
||||||
|
Moves to the last visible character of the final message in the buffer
|
||||||
|
if there are no more open messages."
|
||||||
|
(interactive)
|
||||||
(while (and (notmuch-show-next-message-without-marking-read)
|
(while (and (notmuch-show-next-message-without-marking-read)
|
||||||
(not (notmuch-show-message-open-p))))
|
(not (notmuch-show-message-open-p))))
|
||||||
(notmuch-show-mark-read))
|
(notmuch-show-mark-read))
|
||||||
|
|
||||||
(defun notmuch-show-previous-message ()
|
(defun notmuch-show-previous-message-without-marking-read ()
|
||||||
"Backup to the beginning of the previous message in the buffer.
|
"Backup to the beginning of the previous message in the buffer.
|
||||||
|
|
||||||
If within a message rather than at the beginning of it, then
|
If within a message rather than at the beginning of it, then
|
||||||
simply move to the beginning of the current message."
|
simply move to the beginning of the current message.
|
||||||
(interactive)
|
|
||||||
|
Returns nil if already on the first message in the buffer."
|
||||||
(let ((start (point)))
|
(let ((start (point)))
|
||||||
(notmuch-show-move-to-current-message-summary-line)
|
(notmuch-show-move-to-current-message-summary-line)
|
||||||
(if (not (< (point) start))
|
(if (not (< (point) start))
|
||||||
|
@ -580,8 +587,22 @@ simply move to the beginning of the current message."
|
||||||
(re-search-backward notmuch-show-message-begin-regexp nil t)
|
(re-search-backward notmuch-show-message-begin-regexp nil t)
|
||||||
(re-search-backward notmuch-show-message-begin-regexp nil t)
|
(re-search-backward notmuch-show-message-begin-regexp nil t)
|
||||||
(notmuch-show-move-to-current-message-summary-line)
|
(notmuch-show-move-to-current-message-summary-line)
|
||||||
))
|
(recenter 0)
|
||||||
(recenter 0)))
|
(if (= (point) start)
|
||||||
|
nil
|
||||||
|
t))
|
||||||
|
(recenter 0)
|
||||||
|
(nil))))
|
||||||
|
|
||||||
|
(defun notmuch-show-previous-message ()
|
||||||
|
"Backup to the previous message (whether open or closed)
|
||||||
|
and remove the unread tag from that message.
|
||||||
|
|
||||||
|
If within a message rather than at the beginning of it, then
|
||||||
|
simply move to the beginning of the current message."
|
||||||
|
(interactive)
|
||||||
|
(notmuch-show-previous-message-without-marking-read)
|
||||||
|
(notmuch-show-mark-read))
|
||||||
|
|
||||||
(defun notmuch-show-find-previous-message ()
|
(defun notmuch-show-find-previous-message ()
|
||||||
"Returns the position of the previous message in the buffer.
|
"Returns the position of the previous message in the buffer.
|
||||||
|
@ -594,9 +615,19 @@ it."
|
||||||
; Looks like we have to use both.
|
; Looks like we have to use both.
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(save-window-excursion
|
(save-window-excursion
|
||||||
(notmuch-show-previous-message)
|
(notmuch-show-previous-message-without-marking-read)
|
||||||
(point))))
|
(point))))
|
||||||
|
|
||||||
|
(defun notmuch-show-previous-open-message ()
|
||||||
|
"Backup to previous open message (that is, body is visible).
|
||||||
|
|
||||||
|
Moves to the first message in the buffer if there are no previous
|
||||||
|
open messages."
|
||||||
|
(interactive)
|
||||||
|
(while (and (notmuch-show-previous-message-without-marking-read)
|
||||||
|
(not (notmuch-show-message-open-p))))
|
||||||
|
(notmuch-show-mark-read))
|
||||||
|
|
||||||
(defun notmuch-show-rewind ()
|
(defun notmuch-show-rewind ()
|
||||||
"Backup through the thread, (reverse scrolling compared to \\[notmuch-show-advance-and-archive]).
|
"Backup through the thread, (reverse scrolling compared to \\[notmuch-show-advance-and-archive]).
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue