emacs: Introduce `notmuch-call-notmuch-sexp'

This is just like `notmuch-call-notmuch-json', but parses S-expression
output.  Note that, also like `notmuch-call-notmuch-json', this
doesn't consider trailing data to be an error, which may or may not be
what we want in the long run.
This commit is contained in:
Austin Clements 2013-06-23 19:43:17 -04:00 committed by David Bremner
parent 0e035e1ccd
commit 2626d81573

View file

@ -489,6 +489,23 @@ an error."
(json-read)))
(delete-file err-file)))))
(defun notmuch-call-notmuch-sexp (&rest args)
"Invoke `notmuch-command' with ARGS and return the parsed S-exp output.
If notmuch exits with a non-zero status, this will pop up a
buffer containing notmuch's output and signal an error."
(with-temp-buffer
(let ((err-file (make-temp-file "nmerr")))
(unwind-protect
(let ((status (apply #'call-process
notmuch-command nil (list t err-file) nil args)))
(notmuch-check-exit-status status (cons notmuch-command args)
(buffer-string) err-file)
(goto-char (point-min))
(read (current-buffer)))
(delete-file err-file)))))
(defun notmuch-start-notmuch (name buffer sentinel &rest args)
"Start and return an asynchronous notmuch command.