[PATCH 2/8] emacs: Separate search line parsing and display

Subject: [PATCH 2/8] emacs: Separate search line parsing and display

Date: Tue, 3 Jul 2012 18:20:53 -0400

To: notmuch@notmuchmail.org

Cc: tomi.ollila@iki.fi

From: Austin Clements


Previously, much of the display of search lines was done in the same
function that parsed the CLI's output.  Now the parsing function only
parses, and notmuch-search-show-result fully inserts the search result
in the search buffer.
---
 emacs/notmuch.el |   33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index be217a2..dadc6d6 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -726,11 +726,19 @@ non-authors is found, assume that all of the authors match."
     (insert
      (format format (propertize tags 'font-lock-face 'notmuch-tag-face))))))
 
-(defun notmuch-search-show-result (date count authors subject tags)
-  (dolist (format notmuch-search-result-format)
-    (notmuch-search-insert-field (car format) (cdr format)
-				 date count authors subject tags))
-  (insert "\n"))
+(defun notmuch-search-show-result (thread-id date count authors subject tags)
+  ;; Ignore excluded matches
+  (unless (eq (aref count 1) ?0)
+    (let ((beg (point))
+	  (tags-str (mapconcat 'identity tags " ")))
+      (dolist (format notmuch-search-result-format)
+	(notmuch-search-insert-field (car format) (cdr format)
+				     date count authors subject tags-str))
+      (insert "\n")
+      (notmuch-search-color-line beg (point) tags)
+      (put-text-property beg (point) 'notmuch-search-thread-id thread-id)
+      (put-text-property beg (point) 'notmuch-search-authors authors)
+      (put-text-property beg (point) 'notmuch-search-subject subject))))
 
 (defun notmuch-search-process-filter (proc string)
   "Process and filter the output of \"notmuch search\""
@@ -758,17 +766,10 @@ non-authors is found, assume that all of the authors match."
 		      (goto-char (point-max))
 		      (if (/= (match-beginning 1) line)
 			  (insert (concat "Error: Unexpected output from notmuch search:\n" (substring string line (match-beginning 1)) "\n")))
-		      ;; We currently just throw away excluded matches.
-		      (unless (eq (aref count 1) ?0)
-			(let ((beg (point)))
-			  (notmuch-search-show-result date count authors subject tags)
-			  (notmuch-search-color-line beg (point) tag-list)
-			  (put-text-property beg (point) 'notmuch-search-thread-id thread-id)
-			  (put-text-property beg (point) 'notmuch-search-authors authors)
-			  (put-text-property beg (point) 'notmuch-search-subject subject)
-			  (when (string= thread-id notmuch-search-target-thread)
-			    (set 'found-target beg)
-			    (set 'notmuch-search-target-thread "found"))))
+		      (when (string= thread-id notmuch-search-target-thread)
+			(set 'found-target (point))
+			(set 'notmuch-search-target-thread "found"))
+		      (notmuch-search-show-result thread-id date count authors subject tag-list)
 		      (set 'line (match-end 0)))
 		  (set 'more nil)
 		  (while (and (< line (length string)) (= (elt string line) ?\n))
-- 
1.7.10


Thread: