[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>
- bulk replacement on region, buffer, file?,
Tom Roche <=