unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Automate replace-regexp
@ 2018-08-25 15:19 Rodolfo Medina
  2018-08-25 16:04 ` Skip Montanaro
  0 siblings, 1 reply; 5+ messages in thread
From: Rodolfo Medina @ 2018-08-25 15:19 UTC (permalink / raw)
  To: help-gnu-emacs

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




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Automate replace-regexp
  2018-08-25 15:19 Automate replace-regexp Rodolfo Medina
@ 2018-08-25 16:04 ` Skip Montanaro
  2018-08-26  2:15   ` Rodolfo Medina
  0 siblings, 1 reply; 5+ messages in thread
From: Skip Montanaro @ 2018-08-25 16:04 UTC (permalink / raw)
  To: rodolfo.medina; +Cc: Help GNU Emacs

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

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 "..." "..."))

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
>
>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Automate replace-regexp
  2018-08-25 16:04 ` Skip Montanaro
@ 2018-08-26  2:15   ` Rodolfo Medina
  2018-08-26  2:40     ` Rodolfo Medina
  2018-08-26  4:01     ` Rodolfo Medina
  0 siblings, 2 replies; 5+ messages in thread
From: Rodolfo Medina @ 2018-08-26  2:15 UTC (permalink / raw)
  To: help-gnu-emacs

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
>>
>>




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Automate replace-regexp
  2018-08-26  2:15   ` Rodolfo Medina
@ 2018-08-26  2:40     ` Rodolfo Medina
  2018-08-26  4:01     ` Rodolfo Medina
  1 sibling, 0 replies; 5+ messages in thread
From: Rodolfo Medina @ 2018-08-26  2:40 UTC (permalink / raw)
  To: help-gnu-emacs

Rodolfo Medina <rodolfo.medina@gmail.com> writes:

> 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...

It seems it begins to work now...

Rodolfo




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Automate replace-regexp
  2018-08-26  2:15   ` Rodolfo Medina
  2018-08-26  2:40     ` Rodolfo Medina
@ 2018-08-26  4:01     ` Rodolfo Medina
  1 sibling, 0 replies; 5+ messages in thread
From: Rodolfo Medina @ 2018-08-26  4:01 UTC (permalink / raw)
  To: help-gnu-emacs

Rodolfo Medina <rodolfo.medina@gmail.com> writes:

> Besides, the command should only act in the present paragraph...

...Or better, to the next occurrence of the TeX command `\Endpiece'...
(MusiXTeX document...)

Rodolfo




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-08-26  4:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-25 15:19 Automate replace-regexp Rodolfo Medina
2018-08-25 16:04 ` Skip Montanaro
2018-08-26  2:15   ` Rodolfo Medina
2018-08-26  2:40     ` Rodolfo Medina
2018-08-26  4:01     ` Rodolfo Medina

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).