[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