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

Reply via email to