[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#11983: 24.1; Electric-command-loop broken?
From: |
Stefan Monnier |
Subject: |
bug#11983: 24.1; Electric-command-loop broken? |
Date: |
Fri, 20 Jul 2012 05:47:40 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) |
> (unwind-protect
> (catch 'return-tag
> (Electric-command-loop 'return-tag))
> (cleanup-form))
But in which way is this different from `recursive-edit'?
Hmmm... I guess it is different in that it is easier to exit an
Electric-command-loop than a recursive-edit, so it is like
a "transient/lightweight" recursive-edit.
I think it would be good to try to describe it by comparing it to
recursive-edit.
It seems that it requires a fair bit of extra surrounding code to use it
right. E.g. electric-buffer-list is buggy because it lacks this extra
code: after popping up the electric-buffer-list, you can select some
other window and work there, but the behavior is then all
messed up.
>> > - The doc string says
>> > ;; Given third argument non-nil, it
>> > ;; INHIBITS quitting unless the user types C-g at toplevel. This is
>> > ;; so user can do things like C-u C-g and not get thrown out.
>> > Yet it appears to me, that even for C-u C-g the user gets thrown out.
>>
>> I have no idea what this "C-u C-g" refers to, indeed.
> If you type a plain C-g, Electric-command-loop throws
> 'return-tag. Now the idea is that if you type C-u, then you
> change your mind and want to cancel it by typing C-g, then the
> code should not leave the temporary command loop.
I see, yes. This inhibit-quitting seems dangerous since it binds
inhibit-quit. But yes, I see in the code it tries to handle C-g after
some prefix key. Not sure why it now fails or whether it ever worked.
Stefan