[PATCH] emacs: Fix trimming regexp in notmuch-check-exit-status

Tomi Ollila tomi.ollila at iki.fi
Sat May 18 06:45:30 PDT 2013


On Fri, May 17 2013, Austin Clements <amdragon at MIT.EDU> wrote:

> For such a simple regexp, this was broken in a very complicated way.
>
> The intent was to strip the newline (and potentially other whitespace)
> off the end of the error string so there wasn't an extra newline in
> the error signal.  However, the regexp was deeply dependent on the
> active syntax table and the subtleties of $.  We didn't notice this
> because all notmuch major modes put ?\n in the whitespace class, which
> makes this behaved as intended: the "\\s " matches all newlines, but
> by matching the newline character, causes the $ *not* to match
> *except* where it matched the empty string at the very end of the
> string, which was not followed by a newline.
>
> However, if the syntax table declares ?\n to be non-whitespace
> (lisp-mode declares it as endcomment, and is likely to be the mode
> you're in when testing functions), then this regexp behaves completely
> differently, matching trailing spaces at the end of every line within
> the string.
>
> The solution is to say what we mean for whitespace *and* to switch
> from $ to \', which matches only the end of the string, rather than
> the end of each line.  Both are necessary or this will strip away
> interior newlines, which is not what we want.

LGTM.

Tomi


> ---
>  emacs/notmuch-lib.el |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
> index 790136e..59b1ce3 100644
> --- a/emacs/notmuch-lib.el
> +++ b/emacs/notmuch-lib.el
> @@ -438,7 +438,7 @@ You may need to restart Emacs or upgrade your notmuch package."))
>  	(if err
>  	    ;; We have an error message straight from the CLI.
>  	    (notmuch-logged-error
> -	     (replace-regexp-in-string "\\s $" "" err) extra)
> +	     (replace-regexp-in-string "[ \n\r\t\f]*\\'" "" err) extra)
>  	  ;; We only have combined output from the CLI; don't inundate
>  	  ;; the user with it.  Mimic `process-lines'.
>  	  (notmuch-logged-error (format "%s exited with status %s"
> -- 
> 1.7.10.4
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list