Tags: patch Attached patch is a proof of concept for an occur-edit-mode alike for *grep* buffers. It uses the new track-changes library to track the edits made in the *grep* buffer to then finally save these edits to the corresponding files. I've tested this with: 1. pure deletions: If you have a match that says "(cur-beg start" and you change it to "(cur- start". This is special because track-changes-fetch passes equal BEG and END to grep-edit--track-changes-finalise. 2. edits: something like "(cur-beg start" -> "(cur-beg start balh" is handled like you would expect. 3. edits with newline: if the edit includes a newline, then that is reproduced. and what is not handled currently: deleting a match line to imply deletion of that line from the matched file. I don't know how to handle this currently, I need to learn the library more. There's also definitely a million more cases that I didn't anticipate when I wrote the logic for grep-edit--track-changes-finalise. I'm sending the patch now to see if there's enough interest before I go about fixing the edge cases (there's bug#52815). If there is enough interest, I will take a shot at implementing something like this for xref result buffers too. In GNU Emacs 30.0.50 (build 8, x86_64-pc-linux-gnu, X toolkit, cairo version 1.18.0, Xaw scroll bars) of 2024-05-07 built on astatine Repository revision: 4b31074f5f49898ba0499a2b617cad425750eafa Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101011 System Description: Debian GNU/Linux trixie/sid Configured using: 'configure --with-sound=alsa --with-x-toolkit=lucid --with-json --without-xaw3d --without-gconf --without-libsystemd --with-cairo --with-xft'