X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=emacs%2Fnotmuch.el;h=f9454d8bd260ca575e82e8bd34b1e1b77eaac4aa;hb=96864a9aea20f477d5542e5fb390becf20942337;hp=60e8bf957ca45da525e78b3e485ed8d2ace3fba9;hpb=0a4663ff43c563ebe25234afb0ae012bc2c42959;p=notmuch diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 60e8bf95..f9454d8b 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -820,12 +820,6 @@ non-authors is found, assume that all of the authors match." (insert (apply #'format string objects)) (insert "\n"))) -(defvar notmuch-search-process-state nil - "Parsing state of the search process filter.") - -(defvar notmuch-search-json-parser nil - "Incremental JSON parser for the search process filter.") - (defun notmuch-search-process-filter (proc string) "Process and filter the output of \"notmuch search\"" (let ((results-buf (process-buffer proc)) @@ -838,41 +832,10 @@ non-authors is found, assume that all of the authors match." ;; Insert new data (save-excursion (goto-char (point-max)) - (insert string))) - (with-current-buffer results-buf - (while (not done) - (condition-case nil - (case notmuch-search-process-state - ((begin) - ;; Enter the results list - (if (eq (notmuch-json-begin-compound - notmuch-search-json-parser) 'retry) - (setq done t) - (setq notmuch-search-process-state 'result))) - ((result) - ;; Parse a result - (let ((result (notmuch-json-read notmuch-search-json-parser))) - (case result - ((retry) (setq done t)) - ((end) (setq notmuch-search-process-state 'end)) - (otherwise (notmuch-search-show-result result))))) - ((end) - ;; Any trailing data is unexpected - (notmuch-json-eof notmuch-search-json-parser) - (setq done t))) - (json-error - ;; Do our best to resynchronize and ensure forward - ;; progress - (notmuch-search-show-error - "%s" - (with-current-buffer parse-buf - (let ((bad (buffer-substring (line-beginning-position) - (line-end-position)))) - (forward-line) - bad)))))) - ;; Clear out what we've parsed - (with-current-buffer parse-buf - (delete-region (point-min) (point))))))) + (insert string)) + (notmuch-json-parse-partial-list 'notmuch-search-show-result + 'notmuch-search-show-error + results-buf))))) (defun notmuch-search-tag-all (&optional tag-changes) "Add/remove tags from all messages in current search buffer. @@ -984,9 +947,6 @@ Other optional parameters are used as follows: ;; This buffer will be killed by the sentinel, which ;; should be called no matter how the process dies. (parse-buf (generate-new-buffer " *notmuch search parse*"))) - (set (make-local-variable 'notmuch-search-process-state) 'begin) - (set (make-local-variable 'notmuch-search-json-parser) - (notmuch-json-create-parser parse-buf)) (process-put proc 'parse-buf parse-buf) (set-process-sentinel proc 'notmuch-search-process-sentinel) (set-process-filter proc 'notmuch-search-process-filter)