]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow regexp-quote to return its argument
authorMattias Engdegård <mattiase@acm.org>
Mon, 23 Sep 2019 16:56:30 +0000 (18:56 +0200)
committerMattias Engdegård <mattiase@acm.org>
Wed, 25 Sep 2019 16:09:42 +0000 (18:09 +0200)
* src/search.c (Fregexp_quote): Only allocate a new string if needed.
* doc/lispref/searching.texi (Regexp Functions):
* etc/NEWS (Incompatible Lisp Changes): Document.

doc/lispref/searching.texi
etc/NEWS
src/search.c

index 1286b63446adb82f04de0b6acaa09c4b498f1ad4..65f56b490fdf69a3b74bb10f88f507d8f2af0c82 100644 (file)
@@ -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
index 3072d4081b80dc181c19e6a4075fe855323d1be6..96b2cb129bdcb522d271153d3aeab462becf86f8 100644 (file)
--- 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.
+
 \f
 * Lisp Changes in Emacs 27.1
 
index 1e57d2ecbe5c9c74de9374287e1871991b050e7f..9d95dcbca5849853526fca45ca654cbfcb6a6392 100644 (file)
@@ -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;
 }