GNU bug report logs -
#65536
30.0.50; replace-regexp-in-string documentation does not mention it saves match data
Previous Next
Reported by: Jens Schmidt <jschmidt4gnu <at> vodafonemail.de>
Date: Fri, 25 Aug 2023 13:18:01 UTC
Severity: normal
Tags: notabug, wontfix
Found in version 30.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 65536 <at> debbugs.gnu.org (full text, mbox):
On 2023-08-25 16:18, Eli Zaretskii wrote:
>> Date: Fri, 25 Aug 2023 15:16:29 +0200
>> From: Jens Schmidt via "Bug reports for GNU Emacs,
>> the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>> Maybe this should be explicitly documented in its doc string and/or
>> the Emacs Lisp manual ((elisp) Search and Replace) so that users of
>> the function can rely on that fact?
>
> Is it important to promise never to clobber match-data in this
> function?
Not sure whether the following is convincing enough ...
- I came across this question in the following scenario:
(match-fat-regexp with a lot of subres, one of which matches quoted
chars: "\\(?5:\\(?:[[:alnum:]_]+\\|\\\\.\\)+\\)")
(let ((a (match-string 1 input))
;; unquote quoted chars
(b (replace-regexp-in-string
"\\\\\\(.\\)" "\\1"
(match-string 5 input)
t nil))
(c (match-string 7 input)))
...)
So for that and similar scenarios it would be helpful.
- And since `replace-regexp-in-string' contains that `save-match-data'
for a long time already (at least since Emacs 23) I guess that a lot
of authors have been relying on that fact, either consciously, after
having peeked into the function, or unconsciously.
- If it helps, I could provide a patch ...
This bug report was last modified 1 year and 269 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.