emacs: Introduce generic boolean term escaping function

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.
This commit is contained in:
Austin Clements 2012-10-26 16:18:10 -04:00 committed by David Bremner
parent 05c87b5d18
commit 1a4cb8fd29
2 changed files with 16 additions and 2 deletions

View file

@ -161,9 +161,23 @@ the user hasn't set this variable with the old or new value."
"[No Subject]" "[No Subject]"
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) (defun notmuch-id-to-query (id)
"Return a query that matches the message with id 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)))
;; ;;

View file

@ -667,7 +667,7 @@ Some One <someone@somewhere.org>
Some One Else <notsomeone@somewhere.org> Some One Else <notsomeone@somewhere.org>
Notmuch <notmuch@notmuchmail.org> Notmuch <notmuch@notmuchmail.org>
Stash my stashables Stash my stashables
id:"bought" id:bought
bought bought
inbox,stashtest inbox,stashtest
${gen_msg_filename} ${gen_msg_filename}