On Fri, Oct 26 2012, Austin Clements wrote: > Currently, we only properly escape stashed id queries, but there are > other places where the Emacs UI constructs queries for boolean terms. > Since this escaping function is meant to be used in other places, it > avoids escaping strings that don't need escaping. > --- These 3 patches LGTM. Tomi > emacs/notmuch-lib.el | 16 +++++++++++++++- > test/emacs | 2 +- > 2 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el > index 69867ad..eeb005f 100644 > --- a/emacs/notmuch-lib.el > +++ b/emacs/notmuch-lib.el > @@ -161,9 +161,23 @@ the user hasn't set this variable with the old or new value." > "[No Subject]" > subject))) > > +(defun notmuch-escape-boolean-term (term) > + "Escape a boolean term for use in a query. > + > +The caller is responsible for prepending the term prefix and a > +colon. This performs minimal escaping in order to produce > +user-friendly queries." > + > + (save-match-data > + (if (or (equal term "") > + (string-match "[ ()]\\|^\"" term)) > + ;; Requires escaping > + (concat "\"" (replace-regexp-in-string "\"" "\"\"" term t t) "\"") > + term))) > + > (defun notmuch-id-to-query (id) > "Return a query that matches the message with id ID." > - (concat "id:\"" (replace-regexp-in-string "\"" "\"\"" id t t) "\"")) > + (concat "id:" (notmuch-escape-boolean-term id))) > > ;; > > diff --git a/test/emacs b/test/emacs > index 21f1d16..44f641e 100755 > --- a/test/emacs > +++ b/test/emacs > @@ -667,7 +667,7 @@ Some One <someone@somewhere.org> > Some One Else <notsomeone@somewhere.org> > Notmuch <notmuch@notmuchmail.org> > Stash my stashables > -id:"bought" > +id:bought > bought > inbox,stashtest > ${gen_msg_filename} > -- > 1.7.10 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch