]> git.notmuchmail.org Git - notmuch/commitdiff
notmuch.el: Make the magic spacebar archive a thread in the end.
authorCarl Worth <cworth@cworth.org>
Wed, 4 Nov 2009 17:21:09 +0000 (09:21 -0800)
committerCarl Worth <cworth@cworth.org>
Wed, 4 Nov 2009 17:21:09 +0000 (09:21 -0800)
Next all it needs to do is kill the buffer and show the next thread.

notmuch.el

index 062beafc322a2da725d414e228f1bba1c35c4a35..07f5477986b8cc367c153d619f2450a9c33baf92 100644 (file)
@@ -39,7 +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 "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)
+    (define-key map " " 'notmuch-show-advance-marking-read-and-archiving)
     map)
   "Keymap for \"notmuch show\" buffers.")
 (fset 'notmuch-show-mode-map notmuch-show-mode-map)
     map)
   "Keymap for \"notmuch show\" buffers.")
 (fset 'notmuch-show-mode-map notmuch-show-mode-map)
@@ -182,8 +182,8 @@ simply move to the beginning of the current message."
       (notmuch-show-remove-tag "unread"))
   (notmuch-show-next-message))
 
       (notmuch-show-remove-tag "unread"))
   (notmuch-show-next-message))
 
-(defun notmuch-show-advance-marking-read ()
-  "Advance through buffer, marking messages as read.
+(defun notmuch-show-advance-marking-read-and-archiving ()
+  "Advance through buffer, marking read and archiving.
 
 This command is intended to be one of the simplest ways to
 process a thread of email. It does the following:
 
 This command is intended to be one of the simplest ways to
 process a thread of email. It does the following:
@@ -193,11 +193,20 @@ 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
 
 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."
+message and advance to the next message.
+
+Finally, if there is no further message to advance to, and this
+last message is already read, then archive the entire current
+thread, (remove the \"inbox\" tag from each message)."
   (interactive)
   (interactive)
-  (if (< (notmuch-show-find-next-message) (window-end))
-      (notmuch-show-mark-read-then-next-message)
-    (scroll-up nil)))
+  (let ((next (notmuch-show-find-next-message))
+       (unread (member "unread" (notmuch-show-get-tags))))
+    (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)))))
 
 (defun notmuch-show-markup-citations-region (beg end)
   (goto-char beg)
 
 (defun notmuch-show-markup-citations-region (beg end)
   (goto-char beg)