aboutsummaryrefslogtreecommitdiffhomepage
path: root/emacs/notmuch-lib.el
diff options
context:
space:
mode:
authorGravatar Austin Clements <amdragon@MIT.EDU>2012-12-15 15:04:16 -0500
committerGravatar David Bremner <bremner@debian.org>2012-12-16 17:00:22 -0400
commit66c935cff37fcab1ef7b0a5cecf5bc1c62d8d2ed (patch)
tree1fb3f2df33641c2813f6be80cdb5fc0f40b97061 /emacs/notmuch-lib.el
parent0844af35eb9a4843fbf7053ca37f9f69bbafdcb1 (diff)
emacs: Factor out synchronous notmuch JSON invocations
Previously this code was duplicated between show and reply. This factors out synchronously invoking notmuch and parsing the output as JSON.
Diffstat (limited to 'emacs/notmuch-lib.el')
-rw-r--r--emacs/notmuch-lib.el14
1 files changed, 14 insertions, 0 deletions
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 92c8417a..c3d76d22 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -371,6 +371,20 @@ contents of ERR-FILE will be included in the error message."
;; Mimic `process-lines'
(error "%s exited with status %s" (car command) exit-status))))
+(defun notmuch-call-notmuch-json (&rest args)
+ "Invoke `notmuch-command' with `args' and return the parsed JSON output.
+
+The returned output will represent objects using property lists
+and arrays as lists."
+
+ (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))))
+
;; Compatibility functions for versions of emacs before emacs 23.
;;
;; Both functions here were copied from emacs 23 with the following copyright: