diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2019-09-23 18:56:30 +0200 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2019-09-25 18:09:42 +0200 |
commit | a773a6474897356cd78aeea092d2c1a51ede23f9 (patch) | |
tree | 9935673b464dc14a03a70a36c6ce7756404f0337 | |
parent | 84567150e757ee3991a4b4f96a27080f92cb6d48 (diff) | |
download | emacs-a773a6474897356cd78aeea092d2c1a51ede23f9.tar.gz |
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.
-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; } |