I don't (yet) know how complete this is (Someone's "workflow" it may break) but tests pass... ---
This is related to id:m2lgyr378r....@guru.guru-group.fi -- notmuch cli supports "--" to separate options from rest of the command line universally. The change here would complete the particular need I presented in that email -- but it might not be complete solution... emacs/notmuch-address.el | 2 +- emacs/notmuch-mua.el | 2 +- emacs/notmuch-query.el | 13 ++----------- emacs/notmuch-show.el | 4 ++-- emacs/notmuch-tree.el | 2 +- emacs/notmuch.el | 2 +- 6 files changed, 8 insertions(+), 17 deletions(-) diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el index 10eaab1..2ea1c62 100644 --- a/emacs/notmuch-address.el +++ b/emacs/notmuch-address.el @@ -277,7 +277,7 @@ (defun notmuch-address-harvest (&optional addr-prefix synchronous callback) (args `("address" "--format=sexp" "--format-version=2" ,(if sent "--output=recipients" "--output=sender") "--deduplicate=address" - ,query))) + "--" ,query))) (if synchronous (mapc #'notmuch-address-harvest-addr (apply 'notmuch-call-notmuch-sexp args)) diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el index fadf20f..115c23f 100644 --- a/emacs/notmuch-mua.el +++ b/emacs/notmuch-mua.el @@ -183,7 +183,7 @@ (defun notmuch-mua-reply (query-string &optional sender reply-all) (if reply-all (setq args (append args '("--reply-to=all"))) (setq args (append args '("--reply-to=sender")))) - (setq args (append args (list query-string))) + (setq args (append args (list "--" query-string))) ;; Get the reply object as SEXP, and parse it into an elisp object. (setq reply (apply #'notmuch-call-notmuch-sexp args)) diff --git a/emacs/notmuch-query.el b/emacs/notmuch-query.el index 436ad16..fec97ec 100644 --- a/emacs/notmuch-query.el +++ b/emacs/notmuch-query.el @@ -23,7 +23,7 @@ (require 'notmuch-lib) -(defun notmuch-query-get-threads (search-terms) +(defun notmuch-query-get-threads (cli-args search-terms) "Return a list of threads of messages matching SEARCH-TERMS. A thread is a forest or list of trees. A tree is a two element @@ -33,7 +33,7 @@ (defun notmuch-query-get-threads (search-terms) (let ((args '("show" "--format=sexp" "--format-version=1"))) (if notmuch-show-process-crypto (setq args (append args '("--decrypt")))) - (setq args (append args search-terms)) + (setq args (append args cli-args '("--") search-terms)) (apply #'notmuch-call-notmuch-sexp args))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -66,15 +66,6 @@ (defun notmuch-query-map-tree (fn tree) See the function notmuch-query-get-threads for more information." (cons (funcall fn (car tree)) (notmuch-query-map-forest fn (cadr tree)))) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Predefined queries - -(defun notmuch-query-get-message-ids (&rest search-terms) - "Return a list of message-ids of messages that match SEARCH-TERMS" - (notmuch-query-map-threads - (lambda (msg) (plist-get msg :id)) - (notmuch-query-get-threads search-terms))) - (provide 'notmuch-query) ;;; notmuch-query.el ends here diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 5a585f3..8aada01 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1274,11 +1274,11 @@ (defun notmuch-show--build-buffer (&optional state) (when notmuch-show-elide-non-matching-messages (list "--entire-thread=false")))) - (forest (or (notmuch-query-get-threads (append cli-args args)) + (forest (or (notmuch-query-get-threads cli-args args) ;; If a query context reduced the number of ;; results to zero, try again without it. (and notmuch-show-query-context - (notmuch-query-get-threads (append cli-args basic-args))))) + (notmuch-query-get-threads cli-args basic-args)))) ;; Must be reset every time we are going to start inserting ;; messages into the buffer. diff --git a/emacs/notmuch-tree.el b/emacs/notmuch-tree.el index d864e6d..49baee6 100644 --- a/emacs/notmuch-tree.el +++ b/emacs/notmuch-tree.el @@ -890,7 +890,7 @@ (defun notmuch-tree-worker (basic-query &optional query-context target open-targ (let ((proc (notmuch-start-notmuch "notmuch-tree" (current-buffer) #'notmuch-tree-process-sentinel "show" "--body=false" "--format=sexp" - message-arg search-args)) + message-arg "--" search-args)) ;; Use a scratch buffer to accumulate partial output. ;; This buffer will be killed by the sentinel, which ;; should be called no matter how the process dies. diff --git a/emacs/notmuch.el b/emacs/notmuch.el index 8e14692..4f0b7ed 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -971,7 +971,7 @@ (defun notmuch-search (&optional query oldest-first target-thread target-line) (if oldest-first "--sort=oldest-first" "--sort=newest-first") - query)) + "--" query)) ;; Use a scratch buffer to accumulate partial output. ;; This buffer will be killed by the sentinel, which ;; should be called no matter how the process dies. -- 2.7.4 _______________________________________________ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch