GNU bug report logs - #65536
30.0.50; replace-regexp-in-string documentation does not mention it saves match data

Previous Next

Package: emacs;

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):

From: Jens Schmidt <jschmidt4gnu <at> vodafonemail.de>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 65536 <at> debbugs.gnu.org
Subject: Re: bug#65536: 30.0.50; replace-regexp-in-string documentation does
 not mention it saves match data
Date: Fri, 25 Aug 2023 17:26:03 +0200
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.