Emacs Suggestion: dired-do-query-replace-regex Replace ALL (fixed in emacs 23.1)

By Xah Lee. Date: , 2011-02

[Note: The following is a suggestion sent to FSF official emacs bug channel, on 2008-05-17, as bug#267. This suggestion is implemented in emacs 23.1, released on 2009-07. See Emacs 23.1 New Features (released 2009-07).]

Emacs suggestion:

When in dired mode in the processing of doing dired-do-query-replace- regexp (shortcut Q), it offers the ability to do replacement without asking on the current file, by pressing the ! key, but it would be nice to have:

I use dired-do-query-replace-regexp few times a week, typically on tens of files, but maybe once in a month i do it over hundreds or thousands of files on a website.

Often, after some replacement, it becomes obvious that it is safe to do ALL replacement for ALL files. When this is needed, typically i can just hold down the ! key. But when the number of files is hundreds or more, typically there will be several 5 second delays where i assume emacs is doing garbage collection. The bottom line is that, holding down ! is not a good solution because i end up having to wait a total of maybe 20 or 30 seconds during the whole operation.

For this reason, i often abort the operation, then switch to a Perl or Python script i've written that does blind find replace on all files. This will finish the job on thousands of files within 5 seconds. But I couldn't reply on this since often i need interactively see and confirm the replacements, which emacs provides. (emacs also lets me view the change file afterward or decide to save them… etc, which i won't be able to do with perl…)

So, it would be nice, if emacs's dired-do-query-replace-regexp offer the option to do all replacement on all files.

Perhaps this can be introduced as pressing the @ key.

For suggestion item (2), the scenario is that sometimes i have a big file and it is apparent that i don't want any replacement to happen on that file. As things are, i have to repeatedly pressing n while paying attention not to go over to the next file. This is a tiring process.

dired-do-query-replace-regexp is very nice and i've been using it for 2 years. For just tens of files the above isn't a problem. But when doing few hundred files, and on tens of replacement pairs (i.e. using dired-do-query-replace-regexp tens of times, each time on hundreds of files), the above features seems a very good one to have. It seems also a logical feature complementing the various recursive edit and edit-replacement-text currently provided by emacs.

PS some background… I'm doing on static websites, which has few hundred or thousand files, such as systematically changing a style markup, etc. In the past 2 days, i spent entire 2 days using dired-do- query-replace-regexp (in combination with Perl and Python script).


Liket it? Put $5 at patreon. Or Buy Xah Emacs Tutorial. Thanks.