* Macro aborts even though regexp instance exists
@ 2012-10-22 20:39 Swami Tota Ram Shankar
0 siblings, 0 replies; 4+ messages in thread
From: Swami Tota Ram Shankar @ 2012-10-22 20:39 UTC (permalink / raw)
To: help-gnu-emacs
Hi emacs users,
I write a simple macro which works, however, it fails in a particular
case.
C-s
M-r
to get into isearch-forward-regexp
and give a regexp like
ONE\|TWO
It works for every TWO and ONE as long as there is a ONE ahead of TWO.
In the last instance, no ONE exists after TWO and it fails.
\| <=> OR or disjunction.
Any solutions?
This is such a fundamental issue that I think its a bug. When the C-s
M-r is used outside the macro definition, the cursor gladly returns
to the original position when OR is entered and proceeds forward from
there, but perhaps, the macro aborts.
I guess, this can lead to a lot of confusion and time wastage, if the
user is unaware of this and most likely to neglect it because its
contrary to normal usage.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Macro aborts even though regexp instance exists
@ 2012-10-22 20:39 Swami Tota Ram Shankar
2012-10-24 15:23 ` Stefan Monnier
2012-10-24 15:23 ` Stefan Monnier
0 siblings, 2 replies; 4+ messages in thread
From: Swami Tota Ram Shankar @ 2012-10-22 20:39 UTC (permalink / raw)
To: bug-gnu-emacs
Hi emacs users,
I write a simple macro which works, however, it fails in a particular
case.
C-s
M-r
to get into isearch-forward-regexp
and give a regexp like
ONE\|TWO
It works for every TWO and ONE as long as there is a ONE ahead of TWO.
In the last instance, no ONE exists after TWO and it fails.
\| <=> OR or disjunction.
Any solutions?
This is such a fundamental issue that I think its a bug. When the C-s
M-r is used outside the macro definition, the cursor gladly returns
to the original position when OR is entered and proceeds forward from
there, but perhaps, the macro aborts.
I guess, this can lead to a lot of confusion and time wastage, if the
user is unaware of this and most likely to neglect it because its
contrary to normal usage.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Macro aborts even though regexp instance exists
2012-10-22 20:39 Swami Tota Ram Shankar
@ 2012-10-24 15:23 ` Stefan Monnier
2012-10-24 15:23 ` Stefan Monnier
1 sibling, 0 replies; 4+ messages in thread
From: Stefan Monnier @ 2012-10-24 15:23 UTC (permalink / raw)
To: bug-gnu-emacs
> Hi emacs users,
> I write a simple macro which works, however, it fails in a particular case.
> C-s M-r
> to get into isearch-forward-regexp
> and give a regexp like ONE\|TWO
> It works for every TWO and ONE as long as there is a ONE ahead of TWO.
> In the last instance, no ONE exists after TWO and it fails.
[...]
> to the original position when OR is entered and proceeds forward from
> there, but perhaps, the macro aborts.
Indeed, that's a problem: the macro aborts because macros abort not only
on error but also when `ding' is called.
> Any solutions?
You can work around the problem in this particular case as follows:
first do C-s M-r ONE\|TWO RET, and then record your macro using C-u C-s
C-s to recall the last regexp used, so it gets inserted "all at once"
without going through the problematic intermediate state (which is not
when it gets to \ but rather when it gets to ON or ONE and it doesn't
match anything). Maybe isearch-search shouldn't call ding when the
match fails and we're matching regexps (and the match failed because of
a new char being added to search regexp, rather than because the user
hit C-s to jump to the next match).
Please M-x report-emacs-bug,
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Macro aborts even though regexp instance exists
2012-10-22 20:39 Swami Tota Ram Shankar
2012-10-24 15:23 ` Stefan Monnier
@ 2012-10-24 15:23 ` Stefan Monnier
1 sibling, 0 replies; 4+ messages in thread
From: Stefan Monnier @ 2012-10-24 15:23 UTC (permalink / raw)
To: help-gnu-emacs
> Hi emacs users,
> I write a simple macro which works, however, it fails in a particular case.
> C-s M-r
> to get into isearch-forward-regexp
> and give a regexp like ONE\|TWO
> It works for every TWO and ONE as long as there is a ONE ahead of TWO.
> In the last instance, no ONE exists after TWO and it fails.
[...]
> to the original position when OR is entered and proceeds forward from
> there, but perhaps, the macro aborts.
Indeed, that's a problem: the macro aborts because macros abort not only
on error but also when `ding' is called.
> Any solutions?
You can work around the problem in this particular case as follows:
first do C-s M-r ONE\|TWO RET, and then record your macro using C-u C-s
C-s to recall the last regexp used, so it gets inserted "all at once"
without going through the problematic intermediate state (which is not
when it gets to \ but rather when it gets to ON or ONE and it doesn't
match anything). Maybe isearch-search shouldn't call ding when the
match fails and we're matching regexps (and the match failed because of
a new char being added to search regexp, rather than because the user
hit C-s to jump to the next match).
Please M-x report-emacs-bug,
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-10-24 15:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-22 20:39 Macro aborts even though regexp instance exists Swami Tota Ram Shankar
-- strict thread matches above, loose matches on Subject: below --
2012-10-22 20:39 Swami Tota Ram Shankar
2012-10-24 15:23 ` Stefan Monnier
2012-10-24 15:23 ` Stefan Monnier
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.