[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Macro aborts even though regexp instance exists - Serious Bug
From: |
Kevin Rodgers |
Subject: |
Re: Macro aborts even though regexp instance exists - Serious Bug |
Date: |
Tue, 23 Oct 2012 21:54:19 -0600 |
User-agent: |
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.28) Gecko/20120306 Thunderbird/3.1.20 |
On 10/22/12 2:40 PM, Swami Tota Ram Shankar wrote:
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.
It is not a bug: when ONE fails to match the buffer, C-s (which is designed
for interactive use, obviously) signals an error, which terminates the macro
execution.
That's because there is no way for C-s to know that you _might_ type \|TWO
after ONE.
So the solution is to make sure that the regexp is not complete after ONE:
C-s \(ONE\|TWO\)
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.
Yes, there is a lot of confusion and wasted time when a user is not aware
of how to use a program.
I include more newsgroups because of the seriousness of this bug.
Whatever :-)
--
Kevin Rodgers
Denver, Colorado, USA