diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2006-09-11 02:34:05 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2006-09-11 02:34:05 +0000 |
commit | b067ddb637ea73f557012ab9e74e13d3e0ba0c7a (patch) | |
tree | f92ca2dd2b2648796b7e8496a877ce79d72db83e /src/keymap.c | |
parent | c62a80738261d6817254ea13d398d3ef94a918e4 (diff) | |
download | emacs-b067ddb637ea73f557012ab9e74e13d3e0ba0c7a.tar.gz |
* keymap.c (Fkey_binding): Check for local keymap for mouse click
events.
Diffstat (limited to 'src/keymap.c')
-rw-r--r-- | src/keymap.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/keymap.c b/src/keymap.c index 4871179c420..1d854f77b4c 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -1576,6 +1576,33 @@ is non-nil, `key-binding' returns the unmapped command. */) GCPRO1 (key); +#ifdef HAVE_MOUSE + if (VECTORP (key) + && ASIZE (key) > 0 + && CONSP (AREF (key, 0)) + && SYMBOLP (XCAR (AREF (key, 0))) + && CONSP (XCDR (AREF (key, 0)))) + { + Lisp_Object map, obj, pos = XCAR (XCDR (AREF (key, 0))); + + if (XINT (Flength (pos)) == 10 && INTEGERP (XCAR (XCDR (pos)))) + { + obj = Fnth (make_number(4), pos); + map = Fget_char_property (XCAR (XCDR (pos)), + Qkeymap, + NILP (obj) ? + Fwindow_buffer (XCAR (pos)) + : XCAR (obj)); + if (!NILP (Fkeymapp (map))) + { + value = Flookup_key (map, key, accept_default); + if (! NILP (value) && !INTEGERP (value)) + goto done; + } + } + } +#endif /* HAVE_MOUSE */ + if (!NILP (current_kboard->Voverriding_terminal_local_map)) { value = Flookup_key (current_kboard->Voverriding_terminal_local_map, |