This is a bit of a cheat, since the format does not actually
change. On the other hand it is fairly common to do something like
this to shared libary SONAMEs when the ABI changes in some subtle way.
It does rely on the format-version argument being early enough on the
command line to generate a sensible error message.
colon), e.g. (:id "123" :time 54321 :from "foobar"). Null is printed as
nil, true as t and false as nil.
colon), e.g. (:id "123" :time 54321 :from "foobar"). Null is printed as
nil, true as t and false as nil.
-This is version 4 of the structured output format.
+This is version 5 of the structured output format.
Version history
---------------
Version history
---------------
- (notmuch 0.29) added message.crypto to identify overall message
cryptographic state
- (notmuch 0.29) added message.crypto to identify overall message
cryptographic state
+v5
+- sorting support for notmuch show (no change to actual schema,
+ just new command line argument)
+
Common non-terminals
--------------------
Common non-terminals
--------------------
(and config-query
(format " and (%s)" config-query)))
from-or-to-me-query))
(and config-query
(format " and (%s)" config-query)))
from-or-to-me-query))
- (args `("address" "--format=sexp" "--format-version=4"
+ (args `("address" "--format=sexp" "--format-version=5"
,(if sent "--output=recipients" "--output=sender")
"--deduplicate=address"
,query)))
,(if sent "--output=recipients" "--output=sender")
"--deduplicate=address"
,query)))
;;; Mua reply
(defun notmuch-mua-reply (query-string &optional sender reply-all)
;;; Mua reply
(defun notmuch-mua-reply (query-string &optional sender reply-all)
- (let ((args '("reply" "--format=sexp" "--format-version=4"))
+ (let ((args '("reply" "--format=sexp" "--format-version=5"))
(process-crypto notmuch-show-process-crypto)
reply
original)
(process-crypto notmuch-show-process-crypto)
reply
original)
A thread is a forest or list of trees. A tree is a two element
list where the first element is a message, and the second element
is a possibly empty forest of replies."
A thread is a forest or list of trees. A tree is a two element
list where the first element is a message, and the second element
is a possibly empty forest of replies."
- (let ((args '("show" "--format=sexp" "--format-version=4")))
+ (let ((args '("show" "--format=sexp" "--format-version=5")))
(when notmuch-show-process-crypto
(setq args (append args '("--decrypt=true"))))
(setq args (append args search-terms))
(when notmuch-show-process-crypto
(setq args (append args '("--decrypt=true"))))
(setq args (append args search-terms))
(notmuch-tag-clear-cache)
(let ((proc (notmuch-start-notmuch
"notmuch-tree" (current-buffer) #'notmuch-tree-process-sentinel
(notmuch-tag-clear-cache)
(let ((proc (notmuch-start-notmuch
"notmuch-tree" (current-buffer) #'notmuch-tree-process-sentinel
- "show" "--body=false" "--format=sexp" "--format-version=4"
+ "show" "--body=false" "--format=sexp" "--format-version=5"
sort-arg message-arg search-args))
;; Use a scratch buffer to accumulate partial output.
;; This buffer will be killed by the sentinel, which
sort-arg message-arg search-args))
;; Use a scratch buffer to accumulate partial output.
;; This buffer will be killed by the sentinel, which
(save-excursion
(let ((proc (notmuch-start-notmuch
"notmuch-search" buffer #'notmuch-search-process-sentinel
(save-excursion
(let ((proc (notmuch-start-notmuch
"notmuch-search" buffer #'notmuch-search-process-sentinel
- "search" "--format=sexp" "--format-version=4"
+ "search" "--format=sexp" "--format-version=5"
(if oldest-first
"--sort=oldest-first"
"--sort=newest-first")
(if oldest-first
"--sort=oldest-first"
"--sort=newest-first")
* this. New (required) map fields can be added without increasing
* this.
*/
* this. New (required) map fields can be added without increasing
* this.
*/
-#define NOTMUCH_FORMAT_CUR 4
+#define NOTMUCH_FORMAT_CUR 5
/* The minimum supported structured output format version. Requests
* for format versions below this will return an error. */
#define NOTMUCH_FORMAT_MIN 1
/* The minimum supported structured output format version. Requests
* for format versions below this will return an error. */
#define NOTMUCH_FORMAT_MIN 1
YYY/notmuch_fail exited with status 1 (see *Notmuch errors* for more details)
=== ERROR ===
YYY/notmuch_fail exited with status 1
YYY/notmuch_fail exited with status 1 (see *Notmuch errors* for more details)
=== ERROR ===
YYY/notmuch_fail exited with status 1
-command: YYY/notmuch_fail search --format\=sexp --format-version\=4 --sort\=newest-first tag\:inbox
+command: YYY/notmuch_fail search --format\=sexp --format-version\=5 --sort\=newest-first tag\:inbox
exit status: 1"
test_begin_subtest "Search handles subprocess warnings"
exit status: 1"
test_begin_subtest "Search handles subprocess warnings"
This is an error (see *Notmuch errors* for more details)
=== ERROR ===
This is an error
This is an error (see *Notmuch errors* for more details)
=== ERROR ===
This is an error
-command: YYY/notmuch_fail show --format\\=sexp --format-version\\=4 --decrypt\\=true --exclude\\=false \\' \\* \\'
+command: YYY/notmuch_fail show --format\\=sexp --format-version\\=5 --decrypt\\=true --exclude\\=false \\' \\* \\'
exit status: 1
stderr:
This is an error
exit status: 1
stderr:
This is an error