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

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

Re: Automate replace-regexp


From: Rodolfo Medina
Subject: Re: Automate replace-regexp
Date: Sun, 26 Aug 2018 04:15:59 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Skip Montanaro <skip.montanaro@gmail.com> writes:

> If it's a one-time thing, since replace-regexp is a command (uses
> (interactive) to prompt for missing parameters), I'd just define a
> macro with C-x (. From my edit-last-kbd-macro session (ugly, but only
> took a moment to define):
>
> ESC
> xreplace-regex ;; self-insert-command * 14
> TAB ;; indent-for-tab-command
> RET ;; newline
> 2*\ ;; self-insert-command
> bar ;; self-insert-command * 3
> SPC ;; self-insert-command
> %[0-9]+ ;; self-insert-command * 7
> RET ;; newline
> \ ;; self-insert-command
> bar ;; self-insert-command * 3
> RET ;; newline
> ESC
> xrepla ;; self-insert-command * 6
> TAB ;; indent-for-tab-command
> reg ;; self-insert-command * 3
> TAB ;; indent-for-tab-command
> RET ;; newline
> 2*\ ;; self-insert-command
> bar ;; self-insert-command * 3
> RET ;; newline
> \ ;; self-insert-command
> bar ;; self-insert-command * 3
> SPC ;; self-insert-command
> %,(+ ;; self-insert-command * 4
> SPC ;; self-insert-command
> 2#) ;; self-insert-command * 3
> RET ;; newline

Thanks...  But I had problem in defining such a kbd macro...  Every time I try
to insert `M-x query-replace-regexp ...' it would execute that command in the
present buffer rather than simply register it as a kbd macro...


> Once you've got that, you can name it (name-last-kbd-macro), then if
> you want to save it across sessions, edit your ~/.emacs file, and
> execute insert-kbd-macro, which does the obvious thing.
>
> Now, I rarely go to those lengths, and if I need to, it's sometimes
> simpler to just defun a new function. In this case, it might well be,
> something like:
>
> (defun my-replace ()
>     (interactive)
>     (replace-regexp "..." "...")
>     (replace-regexp "..." "..."))

Here I had problems in replacing `...' with the proper expressions.  If I
insert these: "\\bar %[0-9]+", "\\bar", "\\bar %\,(+ 2 \#)", the command fails.
Besides, the command should only act in the present paragraph...

Thanks,

Rodolfo



>
> YMMV.
>
> Skip
> On Sat, Aug 25, 2018 at 10:36 AM Rodolfo Medina
> <rodolfo.medina@gmail.com> wrote:
>>
>> Hi all...
>>
>> In a document, I wish to automate the following two replace-regexp,
>> immediately
>> one after the other, only within the current paragraph:
>>
>> \\bar %[0-9]+     ->    \\bar
>> \\bar             ->    \\bar %\,(+ 2 \#)
>>
>> How can I achieve that, defining a proper command...?
>>
>> Thanks for any help,
>>
>> Rodolfo
>>
>>




reply via email to

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