help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bulk replacement on region, buffer, file?


From: Tom Roche
Subject: bulk replacement on region, buffer, file?
Date: Wed, 09 Dec 2015 19:21:24 -0700
User-agent: GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5)

I would appreciate pointers to code that enables "bulk replacement" of numerous 
string tuples ({to-replace, replace-with}) in a single call. What I mean, why I 
ask:

I frequently scrape blocks of text from PDFs into Emacs text buffers. After I 
do so, I usually want to replace lots of strings in the buffer. E.g. (using '|' 
to delimit the strings),

|CO 2| -> |CO2|
|- | -> ||
|“| -> |"|
|”| -> |"|
|[weird unicodes used for bulleting]| -> |*|

which I do manually by calling `M-x replace-string` or similar interactive or 
regexp function. I'd prefer instead to call something that

1. could be called on a region (if selected) or buffer (if not)

2. could read from a user-editable property file of replacement tuples (like 
those above), similar to `abbrev_defs` but without some constraints of the 
latter that annoy in this usecase. E.g. (unless I'm missing something), I 
cannot use `abbrev` to replace the space-delimited 'CO 2' with 'CO2'.

3. would, for every {to-replace, replace-with} tuple in the file,

* if `to-replace` found, replace every instance with `replace-with`
* if `to-replace` not found, goto next tuple

Is there elisp to do this? Alternatively, pointers to non-elisp (that I could 
invoke on a buffer's file and then `revert-buffer`) would also be appreciated. 
(And, yes, I know this sounds easy to write, but I have other priorities at 
present and no wish to reinvent any well-working wheels.)

Apologies if this is a FAQ, but a brief websearch found nothing that looked 
useful.

TIA, Tom Roche <Tom_Roche@pobox.com>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]