mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-25 19:04:53 +01:00
emacs: Improve error handling for notmuch-call-notmuch-json
This checks for non-zero exit status from JSON CLI calls and pops up an error buffer with stderr and stdout. A consequence of this is that show and reply now handle errors, rather than ignoring them.
This commit is contained in:
parent
66c935cff3
commit
e1d5e88156
1 changed files with 15 additions and 7 deletions
|
@ -375,15 +375,23 @@ contents of ERR-FILE will be included in the error message."
|
|||
"Invoke `notmuch-command' with `args' and return the parsed JSON output.
|
||||
|
||||
The returned output will represent objects using property lists
|
||||
and arrays as lists."
|
||||
and arrays as lists. 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
|
||||
(apply #'call-process notmuch-command nil (list t nil) nil args)
|
||||
(goto-char (point-min))
|
||||
(let ((json-object-type 'plist)
|
||||
(json-array-type 'list)
|
||||
(json-false 'nil))
|
||||
(json-read))))
|
||||
(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))
|
||||
(let ((json-object-type 'plist)
|
||||
(json-array-type 'list)
|
||||
(json-false 'nil))
|
||||
(json-read)))
|
||||
(delete-file err-file)))))
|
||||
|
||||
;; Compatibility functions for versions of emacs before emacs 23.
|
||||
;;
|
||||
|
|
Loading…
Reference in a new issue