From: Lawrence Mitchell Date: Sun, 5 Aug 2012 13:30:15 +0000 (+0800) Subject: * search.c (Freplace_match): Treat \? in the replacement text literally. X-Git-Tag: emacs-24.2.90~843 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d32e47aff6cc01e3ccdfdf5e8f163f8a52285a75;p=emacs.git * search.c (Freplace_match): Treat \? in the replacement text literally. Fixes: debbugs:8161 --- diff --git a/etc/NEWS b/etc/NEWS index b7fb10881ff..e95ce5ac155 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -482,6 +482,10 @@ inefficiency, and not namespace-clean. * Incompatible Lisp Changes in Emacs 24.2 +** If the NEWTEXT arg to `replace-match' contains a substring "\?", +that substring is inserted literally even if the LITERAL arg is +non-nil, instead of causing an error to be signaled. + +++ ** Docstrings starting with `*' no longer indicate user options. Only variables defined using `defcustom' are considered user options. diff --git a/src/ChangeLog b/src/ChangeLog index 8d13944b633..d760dd1df78 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-08-05 Lawrence Mitchell + + * search.c (Freplace_match): Treat \? in the replacement text + literally (Bug#8161). + 2012-08-05 Chong Yidong * term.c (Vsuspend_tty_functions, Vresume_tty_functions): diff --git a/src/search.c b/src/search.c index 480d0b75c70..004e599be9c 100644 --- a/src/search.c +++ b/src/search.c @@ -2226,6 +2226,9 @@ Otherwise treat `\\' as special: `\\N' means substitute what matched the Nth `\\(...\\)'. If Nth parens didn't match, substitute nothing. `\\\\' means insert one `\\'. + `\\?' is treated literally + (for compatibility with `query-replace-regexp'). + Any other character following `\\' signals an error. Case conversion does not apply to these substitutions. FIXEDCASE and LITERAL are optional arguments. @@ -2428,7 +2431,7 @@ since only regular expressions have distinguished subexpressions. */) } else if (c == '\\') delbackslash = 1; - else + else if (c != '?') error ("Invalid use of `\\' in replacement text"); } if (substart >= 0)