[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Emacs 23 Mac port
From: |
YAMAMOTO Mitsuharu |
Subject: |
Re: Emacs 23 Mac port |
Date: |
Tue, 12 Jan 2010 18:03:40 +0900 |
User-agent: |
Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) |
>>>>> On Tue, 12 Jan 2010 09:16:23 +0100, Jan Djärv <address@hidden> said:
>> This seems to be because Apple event handlers are bound in
>> special-event-map. A similar behavior can be observed with
>> dran-and-drop, which is also bound in special-event-map, even on
>> the GTK+ build.
>>
>> 1. emacs -Q
>> 2. Drag-and-drop some C file (such as foo.c) into the Emacs frame.
>> 3. Click the Emacs frame title bar to get focus.
>> 4. C-c C-e
>> => not found though it is bound to c-macro-expand
>> 5. C-c C-e
>> => handled correctly
>>
> I've checked in a fix for this. Keymaps weren't recalculated after
> a command from the special event map was run.
Thanks. But then a special event such as SIGUSR1 cancels an
incomplete key sequence being typed. How about doing this only when
the current buffer is changed by the special event?
YAMAMOTO Mitsuharu
address@hidden
=== modified file 'src/keyboard.c'
*** src/keyboard.c 2010-01-12 08:42:52 +0000
--- src/keyboard.c 2010-01-12 08:46:27 +0000
***************
*** 3187,3192 ****
--- 3187,3193 ----
int count = SPECPDL_INDEX ();
record_single_kboard_state ();
#endif
+ struct buffer *prev_buffer = current_buffer;
last_input_event = c;
Fcommand_execute (tem, Qnil, Fvector (1, &last_input_event), Qt);
***************
*** 3205,3214 ****
unbind_to (count, Qnil);
#endif
! /* The command may have changed the keymaps. Pretend there is input
! in another keyboard and return. This will recalculate keymaps. */
! c = make_number (-2);
! goto exit;
}
/* Handle things that only apply to characters. */
--- 3206,3221 ----
unbind_to (count, Qnil);
#endif
! if (current_buffer != prev_buffer)
! {
! /* The command may have changed the keymaps. Pretend there
! is input in another keyboard and return. This will
! recalculate keymaps. */
! c = make_number (-2);
! goto exit;
! }
! else
! goto retry;
}
/* Handle things that only apply to characters. */
- Re: Emacs 23 Mac port, Leo, 2010/01/01
- Re: Emacs 23 Mac port, Leo, 2010/01/02
- Re: Emacs 23 Mac port, YAMAMOTO Mitsuharu, 2010/01/02
- Re: Emacs 23 Mac port, Stefan Monnier, 2010/01/12
- Re: Emacs 23 Mac port, Jan Djärv, 2010/01/12
- Re: Emacs 23 Mac port, Stefan Monnier, 2010/01/12
- Re: Emacs 23 Mac port, Jan D., 2010/01/13
- Re: Emacs 23 Mac port, Stefan Monnier, 2010/01/13
- Re: Emacs 23 Mac port, YAMAMOTO Mitsuharu, 2010/01/12
- Re: Emacs 23 Mac port, Jan D., 2010/01/13
Re: Emacs 23 Mac port, Stefan Monnier, 2010/01/03