mu4e: support jumping to next, previous unread message
mu4e-headers-next-unread mu4e-view-headers-next-unread Use key-bindings ] and [ to go to next, previous unread message.
This commit is contained in:
@ -587,8 +587,8 @@ after the end of the search results."
|
|||||||
(define-key map (kbd "<M-up>") 'mu4e-headers-prev)
|
(define-key map (kbd "<M-up>") 'mu4e-headers-prev)
|
||||||
(define-key map (kbd "<M-down>") 'mu4e-headers-next)
|
(define-key map (kbd "<M-down>") 'mu4e-headers-next)
|
||||||
|
|
||||||
(define-key map (kbd "<tab>") 'mu4e-headers-next-unread)
|
(define-key map (kbd "]") 'mu4e-headers-next-unread)
|
||||||
(define-key map (kbd "<backtab>")
|
(define-key map (kbd "[")
|
||||||
(lambda() (interactive) (mu4e-headers-next-unread t)))
|
(lambda() (interactive) (mu4e-headers-next-unread t)))
|
||||||
|
|
||||||
;; change the number of headers
|
;; change the number of headers
|
||||||
|
|||||||
@ -590,6 +590,10 @@ FUNC should be a function taking two arguments:
|
|||||||
(define-key map (kbd "<M-down>") 'mu4e-view-headers-next)
|
(define-key map (kbd "<M-down>") 'mu4e-view-headers-next)
|
||||||
(define-key map (kbd "<M-up>") 'mu4e-view-headers-prev)
|
(define-key map (kbd "<M-up>") 'mu4e-view-headers-prev)
|
||||||
|
|
||||||
|
(define-key map (kbd "]") 'mu4e-view-headers-next-unread)
|
||||||
|
(define-key map (kbd "[")
|
||||||
|
(lambda() (interactive) (mu4e-view-headers-next-unread t)))
|
||||||
|
|
||||||
;; switching to view mode (if it's visible)
|
;; switching to view mode (if it's visible)
|
||||||
(define-key map "y" 'mu4e-select-other-view)
|
(define-key map "y" 'mu4e-select-other-view)
|
||||||
|
|
||||||
@ -807,8 +811,7 @@ Also number them so they can be opened using `mu4e-view-go-to-url'."
|
|||||||
"[mouse-1] or [M-RET] to open the link"))
|
"[mouse-1] or [M-RET] to open the link"))
|
||||||
(overlay-put ov 'after-string
|
(overlay-put ov 'after-string
|
||||||
(propertize (format "[%d]" num)
|
(propertize (format "[%d]" num)
|
||||||
'face 'mu4e-url-number-face))
|
'face 'mu4e-url-number-face)))))))
|
||||||
)))))
|
|
||||||
|
|
||||||
|
|
||||||
(defun mu4e~view-hide-cited ()
|
(defun mu4e~view-hide-cited ()
|
||||||
@ -819,7 +822,6 @@ Also number them so they can be opened using `mu4e-view-go-to-url'."
|
|||||||
(flush-lines mu4e-cited-regexp)
|
(flush-lines mu4e-cited-regexp)
|
||||||
(setq mu4e~view-cited-hidden t))))
|
(setq mu4e~view-cited-hidden t))))
|
||||||
|
|
||||||
|
|
||||||
(defmacro mu4e~view-in-headers-context (&rest body)
|
(defmacro mu4e~view-in-headers-context (&rest body)
|
||||||
"Evaluate BODY in the context of the headers buffer connected to
|
"Evaluate BODY in the context of the headers buffer connected to
|
||||||
this view."
|
this view."
|
||||||
@ -827,15 +829,17 @@ this view."
|
|||||||
(unless (buffer-live-p mu4e~view-headers-buffer)
|
(unless (buffer-live-p mu4e~view-headers-buffer)
|
||||||
(mu4e-error "no headers-buffer connected"))
|
(mu4e-error "no headers-buffer connected"))
|
||||||
(let* ((msg (mu4e-message-at-point))
|
(let* ((msg (mu4e-message-at-point))
|
||||||
(docid (mu4e-message-field msg :docid)))
|
(docid (mu4e-message-field msg :docid))
|
||||||
|
(curwin (selected-window)))
|
||||||
(unless docid
|
(unless docid
|
||||||
(mu4e-error "message without docid: action is not possible."))
|
(mu4e-error "message without docid: action is not possible."))
|
||||||
(with-current-buffer mu4e~view-headers-buffer
|
(with-current-buffer mu4e~view-headers-buffer
|
||||||
|
(select-window (get-buffer-window))
|
||||||
(if (mu4e~headers-goto-docid docid)
|
(if (mu4e~headers-goto-docid docid)
|
||||||
,@body
|
,@body
|
||||||
(mu4e-error "cannot find message in headers buffer."))))))
|
(mu4e-error "cannot find message in headers buffer."))))))
|
||||||
|
|
||||||
(defun mu4e-view-headers-next(&optional n)
|
(defun mu4e-view-headers-next (&optional n)
|
||||||
"Move point to the next message header in the headers buffer
|
"Move point to the next message header in the headers buffer
|
||||||
connected with this message view. If this succeeds, return the new
|
connected with this message view. If this succeeds, return the new
|
||||||
docid. Otherwise, return nil. Optionally, takes an integer
|
docid. Otherwise, return nil. Optionally, takes an integer
|
||||||
@ -844,7 +848,7 @@ N (prefix argument), to the Nth next header."
|
|||||||
(mu4e~view-in-headers-context
|
(mu4e~view-in-headers-context
|
||||||
(mu4e~headers-move (or n 1))))
|
(mu4e~headers-move (or n 1))))
|
||||||
|
|
||||||
(defun mu4e-view-headers-prev(&optional n)
|
(defun mu4e-view-headers-prev (&optional n)
|
||||||
"Move point to the previous message header in the headers buffer
|
"Move point to the previous message header in the headers buffer
|
||||||
connected with this message view. If this succeeds, return the new
|
connected with this message view. If this succeeds, return the new
|
||||||
docid. Otherwise, return nil. Optionally, takes an integer
|
docid. Otherwise, return nil. Optionally, takes an integer
|
||||||
@ -853,6 +857,18 @@ N (prefix argument), to the Nth previous header."
|
|||||||
(mu4e~view-in-headers-context
|
(mu4e~view-in-headers-context
|
||||||
(mu4e~headers-move (- (or n 1)))))
|
(mu4e~headers-move (- (or n 1)))))
|
||||||
|
|
||||||
|
(defun mu4e-view-headers-next-unread (&optional backwards)
|
||||||
|
"Move point to the next or previous (when BACKWARDS is non-`nil')
|
||||||
|
unread message header in the headers buffer connected with this
|
||||||
|
message view. If this succeeds, return the new docid. Otherwise,
|
||||||
|
return nil."
|
||||||
|
(interactive "P")
|
||||||
|
(mu4e~view-in-headers-context
|
||||||
|
(mu4e-headers-next-unread backwards)))
|
||||||
|
;; NOTE perhaps nice to have it also _select_ the found message;
|
||||||
|
;; but it seems emacs gets a bit confused when we try that.
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
;; Interactive functions
|
;; Interactive functions
|
||||||
|
|||||||
@ -793,7 +793,8 @@ menu bar.
|
|||||||
@verbatim
|
@verbatim
|
||||||
key description
|
key description
|
||||||
===========================================================
|
===========================================================
|
||||||
n,p go to next, previous message
|
n,p view the next, previous message
|
||||||
|
],[ move to the next, previous unread message
|
||||||
y select the message view (if it's visible)
|
y select the message view (if it's visible)
|
||||||
RET open the message at point in the message view
|
RET open the message at point in the message view
|
||||||
|
|
||||||
@ -1073,7 +1074,8 @@ or by using the keyboard; the default bindings are:
|
|||||||
@verbatim
|
@verbatim
|
||||||
key description
|
key description
|
||||||
==============================================================
|
==============================================================
|
||||||
n,p go to next, previous message
|
n,p view the next, previous message
|
||||||
|
],[ move to the next, previous unread message
|
||||||
y select the headers view (if it's visible)
|
y select the headers view (if it's visible)
|
||||||
|
|
||||||
RET scroll down
|
RET scroll down
|
||||||
|
|||||||
Reference in New Issue
Block a user