X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch.el;h=a23d0c2031654ec563cd729092bb49d4f94d557a;hb=f35db275c44a0bc7a820b0dee20938c3782467d3;hp=3d82f0d093ff9f98f43839dbd0b9acf5870a48ac;hpb=5d05d5434dc5de0d484e334ddf109385e9a56cf3;p=notmuch diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 3d82f0d0..a23d0c20 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -563,6 +563,10 @@ This function advances the next thread when finished." (notmuch-search-remove-tag-thread "inbox") (forward-line)) +(defvar notmuch-search-process-filter-data nil + "Data that has not yet been processed.") +(make-variable-buffer-local 'notmuch-search-process-filter-data) + (defun notmuch-search-process-sentinel (proc msg) "Add a message to let user know when \"notmuch search\" exits" (let ((buffer (process-buffer proc)) @@ -580,6 +584,8 @@ This function advances the next thread when finished." (insert "Incomplete search results (search process was killed).\n")) (if (eq status 'exit) (progn + (if notmuch-search-process-filter-data + (insert (concat "Error: Unexpected output from notmuch search:\n" notmuch-search-process-filter-data))) (insert "End of search results.") (if (not (= exit-status 0)) (insert (format " (process returned %d)" exit-status))) @@ -606,7 +612,7 @@ The attributes defined for matching tags are merged, with later attributes overriding earlier. A message having both \"delete\" and \"unread\" tags with the above settings would have a green foreground and blue background." - :type '(alist :key-type (string) :value-type (list)) + :type '(alist :key-type (string) :value-type (custom-face-edit)) :group 'notmuch) (defun notmuch-search-color-line (start end line-tag-list) @@ -745,8 +751,12 @@ non-authors is found, assume that all of the authors match." (save-excursion (let ((line 0) (more t) - (inhibit-read-only t)) + (inhibit-read-only t) + (string (concat notmuch-search-process-filter-data string))) + (setq notmuch-search-process-filter-data nil) (while more + (while (and (< line (length string)) (= (elt string line) ?\n)) + (setq line (1+ line))) (if (string-match "^\\(thread:[0-9A-Fa-f]*\\) \\([^][]*\\) \\(\\[[0-9/]*\\]\\) \\([^;]*\\); \\(.*\\) (\\([^()]*\\))$" string line) (let* ((thread-id (match-string 1 string)) (date (match-string 2 string)) @@ -756,6 +766,8 @@ non-authors is found, assume that all of the authors match." (tags (match-string 6 string)) (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"))) (let ((beg (point-marker))) (notmuch-search-show-result date count authors subject tags) (notmuch-search-color-line beg (point-marker) tag-list) @@ -767,7 +779,12 @@ non-authors is found, assume that all of the authors match." (set 'found-target beg) (set 'notmuch-search-target-thread "found")))) (set 'line (match-end 0))) - (set 'more nil))))) + (set 'more nil) + (while (and (< line (length string)) (= (elt string line) ?\n)) + (setq line (1+ line))) + (if (< line (length string)) + (setq notmuch-search-process-filter-data (substring string line))) + )))) (if found-target (goto-char found-target))) (delete-process proc))))