aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Clements <amdragon@MIT.EDU>2012-07-09 17:42:35 -0400
committerDavid Bremner <bremner@debian.org>2012-07-12 17:38:43 -0600
commite4818cc9c50acf162f505b26706047132900cf63 (patch)
tree262dcddab937ea4369268dc2d20fa03d5ccda23c
parentbbc74d98f51449c5cd18dec71658f29cdf9777a4 (diff)
emacs: Separate search line parsing and display
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.
-rw-r--r--emacs/notmuch.el33
1 files changed, 17 insertions, 16 deletions
diff --git a/emacs/notmuch.el b/emacs/notmuch.el
index 8ad0b68..746d0cb 100644
--- a/emacs/notmuch.el
+++ b/emacs/notmuch.el
@@ -727,11 +727,19 @@ non-authors is found, assume that all of the authors match."
;; depends on the format of this
(insert (concat "(" (propertize tags 'font-lock-face 'notmuch-tag-face) ")")))))
-(defun notmuch-search-show-result (date count authors subject tags)
- (dolist (spec notmuch-search-result-format)
- (notmuch-search-insert-field (car spec) (cdr spec)
- 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 (spec notmuch-search-result-format)
+ (notmuch-search-insert-field (car spec) (cdr spec)
+ 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\""
@@ -759,17 +767,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))