diff options
-rw-r--r-- | doc/lispref/searching.texi | 3 | ||||
-rw-r--r-- | etc/NEWS | 4 | ||||
-rw-r--r-- | src/search.c | 10 |
3 files changed, 13 insertions, 4 deletions
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 @@ -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; } |