Subject: bug#65854: Multi-file replacement diff

From: Eli Zaretskii <[email-masked]>
Date: Mon, 11 Sep 2023 15:35:47 +0300

> Cc: [email-masked]
> Date: Mon, 11 Sep 2023 09:23:37 +0200
> From:  Eshel Yaron via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <[email-masked]>
> 
> >> I wonder what happens if I call `multi-file-replace-regexp-as-diff` and
> >> select a file `foo.txt`, that I already have open and modified in a
> >> buffer.  IIUC, this will generate the diff based on the contents of the
> >> file on disk, not the buffer, so it might not match when I subsequently
> >> try to apply the diff to the buffer.  WDYT?
> >
> > For such cases you can use multi-buffer-replace-regexp-as-diff
> > from this patch instead of multi-file-replace-regexp-as-diff.
> 
> Well, in the simple example of one file, yes that possible, but the
> point is that you don't always know (or worry about) whether there's an
> overlap between the files you have open and modified and the files your
> regexp/wildcard matches.  Let's say I'm editing an HTML file, and find
> something that I'd like to change.  So I do it.  Than I think "actually,
> let's change that across all my HTML files in this directory".  IMO It
> would be great if I could use this new command,
> `multi-file-replace-regexp-as-diff`, to get a diff showing how that'd
> look.  But in the proposed implementation, that won't work if one of
> those HTML files is open and modified--without any warning, Emacs would
> create a diff that doesn't apply.

Our usual paradigm for these commands is to offer saving any buffers
with unsaved edits, before running the main part of the command.