On Fri, May 17 2013, Austin Clements <amdragon@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@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch