]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch.el
emacs: Helper for reporting search parsing errors
[notmuch] / emacs / notmuch.el
index 8ad0b68054ce228080120f1c96549a8281bb2876..f952fa8e97ea0950a740c6f383466e9a7c6c149d 100644 (file)
@@ -727,10 +727,23 @@ 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))
+(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-show-error (string &rest objects)
+  (insert "Error: Unexpected output from notmuch search:\n")
+  (insert (apply #'format string objects))
   (insert "\n"))
 
 (defun notmuch-search-process-filter (proc string)
@@ -758,18 +771,12 @@ non-authors is found, assume that all of the authors match."
                           (tag-list (if tags (save-match-data (split-string tags)))))
                      (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"))))
+                         (notmuch-search-show-error
+                          (substring string line (match-beginning 1))))
+                     (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))