[PATCH 1/2] contrib: pick: move save-excursion closer to message insertion

Mark Walters markwalters1009 at gmail.com
Thu Jan 10 02:41:16 PST 2013


Pick keeps point roughly at the top of the buffer while inserting
messages at the end as they come in (from the async
parser). Previously the save-excursion to do this was done once for
each thread inserted: now it is done for each individual message.

The advantage is that the message insertion code can decide where to
leave point. In the next patch point will be left on the target message.

Note notmuch-pick-insert-msg is unchanged as that is used by the tag
display update code.
---
 contrib/notmuch-pick/notmuch-pick.el |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/contrib/notmuch-pick/notmuch-pick.el b/contrib/notmuch-pick/notmuch-pick.el
index d75a66a..d597126 100644
--- a/contrib/notmuch-pick/notmuch-pick.el
+++ b/contrib/notmuch-pick/notmuch-pick.el
@@ -638,6 +638,11 @@ unchanged ADDRESS if parsing fails."
   (notmuch-pick-set-message-properties msg)
   (insert "\n"))
 
+(defun notmuch-pick-goto-and-insert-msg (msg)
+  "Insert msg at the end of the buffer."
+  (save-excursion
+    (goto-char (point-max))
+    (notmuch-pick-insert-msg msg)))
 (defun notmuch-pick-insert-tree (tree depth tree-status first last)
   "Insert the message tree TREE at depth DEPTH in the current thread."
   (let ((msg (car tree))
@@ -659,7 +664,7 @@ unchanged ADDRESS if parsing fails."
 	(push "├" tree-status)))
 
       (push (concat (if replies "┬" "─") "►") tree-status)
-      (notmuch-pick-insert-msg (plist-put msg :tree-status tree-status))
+      (notmuch-pick-goto-and-insert-msg (plist-put msg :tree-status tree-status))
       (pop tree-status)
       (pop tree-status)
 
@@ -678,12 +683,10 @@ unchanged ADDRESS if parsing fails."
 	  do (notmuch-pick-insert-tree tree depth tree-status (eq count 1) (eq count n)))))
 
 (defun notmuch-pick-insert-forest-thread (forest-thread)
-  (save-excursion
-    (goto-char (point-max))
-    (let (tree-status)
-      ;; Reset at the start of each main thread.
-      (setq notmuch-pick-previous-subject nil)
-      (notmuch-pick-insert-thread forest-thread 0 tree-status))))
+  (let (tree-status)
+    ;; Reset at the start of each main thread.
+    (setq notmuch-pick-previous-subject nil)
+    (notmuch-pick-insert-thread forest-thread 0 tree-status)))
 
 (defun notmuch-pick-insert-forest (forest)
   (mapc 'notmuch-pick-insert-forest-thread forest))
-- 
1.7.9.1



More information about the notmuch mailing list