aboutsummaryrefslogtreecommitdiffhomepage
path: root/notmuch.el
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2009-11-04 10:25:04 -0800
committerGravatar Carl Worth <cworth@cworth.org>2009-11-04 10:25:04 -0800
commit9a02b950a35a159a3b86ed052c8f1a1349c7bb72 (patch)
treeb7dd03768e90d9bdd24141ca8c5ea4887527d37e /notmuch.el
parentdaedd2442af849c9693e0f13aaed5e7634a4dc54 (diff)
notmuch.el: More magic for magic space bar: Show next thread from search.
This is implemented by stashing away the parent notmuch-search buffer into a variable within the notmuch-show buffer. Then, when magic space bar triggers an archive of the current thread, it switches to the parent search buffer and shows the next thread.
Diffstat (limited to 'notmuch.el')
-rw-r--r--notmuch.el24
1 files changed, 19 insertions, 5 deletions
diff --git a/notmuch.el b/notmuch.el
index c59b40db..747f60c4 100644
--- a/notmuch.el
+++ b/notmuch.el
@@ -199,13 +199,22 @@ 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)."
+thread, (remove the \"inbox\" tag from each message). Also kill
+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))
(unread (member "unread" (notmuch-show-get-tags))))
(if (and (not unread)
(equal next (point)))
- (notmuch-show-archive-thread)
+ (progn
+ (notmuch-show-archive-thread)
+ (let ((parent-buffer notmuch-show-parent-buffer))
+ (kill-this-buffer)
+ (if parent-buffer
+ (progn
+ (switch-to-buffer parent-buffer)
+ (notmuch-search-show-thread)))))
(if (< (notmuch-show-find-next-message) (window-end))
(notmuch-show-mark-read-then-next-message)
(scroll-up nil)))))
@@ -364,12 +373,17 @@ view, (remove the \"inbox\" tag from each), with
mode-name "notmuch-show")
(setq buffer-read-only t))
-(defun notmuch-show (thread-id)
- "Run \"notmuch show\" with the given thread ID and display results."
+(defun notmuch-show (thread-id &optional parent-buffer)
+ "Run \"notmuch show\" with the given thread ID and display results.
+
+The optional PARENT-BUFFER is the notmuch-search buffer from
+which this notmuch-show command was executed, (so that the next
+thread from that buffer can be show when done with this one)."
(interactive "sNotmuch show: ")
(let ((buffer (get-buffer-create (concat "*notmuch-show-" thread-id "*"))))
(switch-to-buffer buffer)
(notmuch-show-mode)
+ (set (make-local-variable 'notmuch-show-parent-buffer) parent-buffer)
(let ((proc (get-buffer-process (current-buffer)))
(inhibit-read-only t))
(if proc
@@ -480,7 +494,7 @@ global search.
(interactive)
(let ((thread-id (notmuch-search-find-thread-id)))
(forward-line)
- (notmuch-show thread-id)))
+ (notmuch-show thread-id (current-buffer))))
(defun notmuch-call-notmuch-process (&rest args)
(let ((error-buffer (get-buffer-create "*Notmuch errors*")))