aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2009-11-04 08:42:38 -0800
committerGravatar Carl Worth <cworth@cworth.org>2009-11-04 09:09:02 -0800
commitaab9b5cf471e20531f09f9619c542f7cad7fbe62 (patch)
tree5ae12f88e8d4386ed602c5b2eaedd524bd07cfe6
parentc8382b2f0e3e409b9bbaef2fb1c46ebb29d2cab1 (diff)
notmuch.el: Start implementing the magic space bar.
Currently this will either advance by screenfuls, or to the next message if it's already within a screenful, and will mark each message read as it is left. It doesn't yet complete the magic by archiving the messages nor by advancing to the next thread in the search.
-rw-r--r--notmuch.el33
1 files changed, 32 insertions, 1 deletions
diff --git a/notmuch.el b/notmuch.el
index a6cb8236..062beafc 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -39,6 +39,7 @@
(define-key map "x" 'kill-this-buffer)
(define-key map "+" 'notmuch-show-add-tag)
(define-key map "-" 'notmuch-show-remove-tag)
+ (define-key map " " 'notmuch-show-advance-marking-read)
map)
"Keymap for \"notmuch show\" buffers.")
(fset 'notmuch-show-mode-map notmuch-show-mode-map)
@@ -144,6 +145,19 @@ last message in the buffer."
(notmuch-show-move-to-current-message-summary-line)
(recenter 0))
+(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."
+ ; 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-message)
+ (point))))
+
(defun notmuch-show-previous-message ()
"Backup to the beginning of the previous message in the buffer.
@@ -162,12 +176,29 @@ simply move to the beginning of the current message."
(recenter 0)))
(defun notmuch-show-mark-read-then-next-message ()
- "Remove uread tag from current message, then advance to next message."
+ "Remove unread tag from current message, then advance to next message."
(interactive)
(if (member "unread" (notmuch-show-get-tags))
(notmuch-show-remove-tag "unread"))
(notmuch-show-next-message))
+(defun notmuch-show-advance-marking-read ()
+ "Advance through buffer, marking messages as read.
+
+This command is intended to be one of the simplest ways to
+process a thread of email. It does the following:
+
+If the current message in the thread is not yet fully visible,
+scroll by a near screenful to read more of the message.
+
+Otherwise, (the end of the current message is already within the
+current window), remove the \"unread\" tag from the current
+message and advance to the next message."
+ (interactive)
+ (if (< (notmuch-show-find-next-message) (window-end))
+ (notmuch-show-mark-read-then-next-message)
+ (scroll-up nil)))
+
(defun notmuch-show-markup-citations-region (beg end)
(goto-char beg)
(beginning-of-line)