From: Mattias EngdegÄrd Date: Mon, 23 Sep 2019 16:56:30 +0000 (+0200) Subject: Allow regexp-quote to return its argument X-Git-Tag: emacs-27.0.90~1434 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a773a6474897356cd78aeea092d2c1a51ede23f9;p=emacs.git Allow regexp-quote to return its argument * src/search.c (Fregexp_quote): Only allocate a new string if needed. * doc/lispref/searching.texi (Regexp Functions): * etc/NEWS (Incompatible Lisp Changes): Document. --- diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 1286b63446a..65f56b490fd 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1562,6 +1562,9 @@ whitespace: (concat "\\s-" (regexp-quote string) "\\s-")) @end group @end example + +The returned string may be @var{string} itself if it does not contain +any special characters. @end defun @cindex optimize regexp diff --git a/etc/NEWS b/etc/NEWS index 3072d4081b8..96b2cb129bd 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2157,6 +2157,10 @@ valid event type. be specified in image specs representing the entire bitmap as a single bool vector. ++++ +** 'regexp-quote' may return its argument string. +If the argument needs no quoting, it can be returned instead of a copy. + * Lisp Changes in Emacs 27.1 diff --git a/src/search.c b/src/search.c index 1e57d2ecbe5..9d95dcbca58 100644 --- a/src/search.c +++ b/src/search.c @@ -3138,10 +3138,12 @@ DEFUN ("regexp-quote", Fregexp_quote, Sregexp_quote, 1, 1, 0, } Lisp_Object result - = make_specified_string (temp, - SCHARS (string) + backslashes_added, - out - temp, - STRING_MULTIBYTE (string)); + = (backslashes_added > 0 + ? make_specified_string (temp, + SCHARS (string) + backslashes_added, + out - temp, + STRING_MULTIBYTE (string)) + : string); SAFE_FREE (); return result; }