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

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

Re: How can I enter query-replace in GNU Emacs using a repeatable functi


From: Tim Landscheidt
Subject: Re: How can I enter query-replace in GNU Emacs using a repeatable function based on values in the line currently at point. - Super User
Date: Mon, 21 Jun 2010 15:00:19 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Tim Visher <tim.visher@gmail.com> wrote:

> I'd like to take the following data and query-replace occurences of
> each word identifier with the corresponding numeric identifier using
> some sort of repeatable function.

>     -1 ACT/CNS
>     -2 AG NFC
>     -3 AID
>     -4 BBG
>     -5 BIA
>     -6 BLM
>     -7 BOC
>     -8 BPD
>     -9 CCC
>     -10 CDC
>     -11 Census

> In other words, with point at

>     -1 ACT/CNS
>     ^

> I'd like to be able to hit a key and launch into the following command

>     query-replace RET ACT/CNS RET -1 RET
> [...]

>From my experience, the easiest way to do that is to copy
the lines to a temporary buffer, hack up a small lisplet:

| (dolist (line '(("-1"  "ACT/CNS")
|                 ("-2"  "AG NFC")
|                 ("-3"  "AID")
|                 ("-4"  "BBG")
|                 ("-5"  "BIA")
|                 ("-6"  "BLM")
|                 ("-7"  "BOC")
|                 ("-8"  "BPD")
|                 ("-9"  "CCC")
|                 ("-10" "CDC")
|                 ("-11" "Census")))
|   (query-replace (car line) (cdr line) nil (point-min) (point-max)))

and then evaluate that in the original buffer with M-x :.

  While it is possible to create a proper "one-key command"
as you intended, chances are that it is very cumbersome and
that you will have to change it soon afterwards when your
requirements shift just a little bit. Directly programming
in Emacs Lisp is much easier and more flexible.

Tim




reply via email to

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