[PATCH 1/3] emacs: Introduce generic boolean term escaping function
Tomi Ollila
tomi.ollila at iki.fi
Fri Oct 26 14:12:45 PDT 2012
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 at somewhere.org>
> Some One Else <notsomeone at somewhere.org>
> Notmuch <notmuch at notmuchmail.org>
> Stash my stashables
> -id:"bought"
> +id:bought
> bought
> inbox,stashtest
> ${gen_msg_filename}
> --
> 1.7.10
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
More information about the notmuch
mailing list