mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-09 01:05:39 -08:00
*** empty log message ***
This commit is contained in:
parent
760cbdd312
commit
6bbbd9b0ee
2 changed files with 39 additions and 35 deletions
55
src/keymap.c
55
src/keymap.c
|
|
@ -24,6 +24,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|||
#include "lisp.h"
|
||||
#include "commands.h"
|
||||
#include "buffer.h"
|
||||
#include "keyboard.h"
|
||||
|
||||
#define min(a, b) ((a) < (b) ? (a) : (b))
|
||||
|
||||
|
|
@ -67,6 +68,11 @@ Lisp_Object Vminibuffer_local_must_match_map;
|
|||
/* Alist of minor mode variables and keymaps. */
|
||||
Lisp_Object Vminor_mode_map_alist;
|
||||
|
||||
/* Keymap mapping ASCII function key sequences onto their preferred forms.
|
||||
Initialized by the terminal-specific lisp files. See DEFVAR for more
|
||||
documentation. */
|
||||
Lisp_Object Vfunction_key_map;
|
||||
|
||||
Lisp_Object Qkeymapp, Qkeymap;
|
||||
|
||||
/* A char over 0200 in a key sequence
|
||||
|
|
@ -220,8 +226,8 @@ access_keymap (map, idx)
|
|||
/* If idx is a list (some sort of mouse click, perhaps?),
|
||||
the index we want to use is the car of the list, which
|
||||
ought to be a symbol. */
|
||||
if (XTYPE (idx) == Lisp_Cons)
|
||||
idx = XCONS (idx)->car;
|
||||
if (EVENT_HAS_PARAMETERS (idx))
|
||||
idx = EVENT_HEAD (idx);
|
||||
|
||||
if (XTYPE (idx) == Lisp_Int
|
||||
&& (XINT (idx) < 0 || XINT (idx) >= DENSE_TABLE_SIZE))
|
||||
|
|
@ -295,8 +301,8 @@ store_in_keymap (keymap, idx, def)
|
|||
/* If idx is a list (some sort of mouse click, perhaps?),
|
||||
the index we want to use is the car of the list, which
|
||||
ought to be a symbol. */
|
||||
if (XTYPE (idx) == Lisp_Cons)
|
||||
idx = Fcar (idx);
|
||||
if (EVENT_HAS_PARAMETERS (idx))
|
||||
idx = EVENT_HEAD (idx);
|
||||
|
||||
if (XTYPE (idx) == Lisp_Int
|
||||
&& (XINT (idx) < 0 || XINT (idx) >= DENSE_TABLE_SIZE))
|
||||
|
|
@ -569,7 +575,8 @@ append_key (key_sequence, key)
|
|||
/* Global, local, and minor mode keymap stuff. */
|
||||
|
||||
/* We can't put these variables inside current_minor_maps, since under
|
||||
DGUX they dump as pure. Bleah. */
|
||||
some systems, static gets macro-defined to be the empty string.
|
||||
Ickypoo. */
|
||||
static Lisp_Object *cmm_modes, *cmm_maps;
|
||||
static int cmm_size;
|
||||
|
||||
|
|
@ -594,15 +601,15 @@ current_minor_maps (modeptr, mapptr)
|
|||
Lisp_Object **modeptr, **mapptr;
|
||||
{
|
||||
int i = 0;
|
||||
Lisp_Object alist, assoc, var;
|
||||
Lisp_Object alist, assoc, var, val;
|
||||
|
||||
for (alist = Vminor_mode_map_alist;
|
||||
CONSP (alist);
|
||||
alist = XCONS (alist)->cdr)
|
||||
if (CONSP (assoc = XCONS (alist)->car)
|
||||
&& XTYPE (var = XCONS (assoc)->car) == Lisp_Symbol
|
||||
&& ! NILP (Fboundp (var))
|
||||
&& ! NILP (Fsymbol_value (var)))
|
||||
&& ! EQ ((val = find_symbol_value (var)), Qunbound)
|
||||
&& ! NILP (val))
|
||||
{
|
||||
if (i >= cmm_size)
|
||||
{
|
||||
|
|
@ -687,7 +694,9 @@ The binding is probably a symbol with a function definition.")
|
|||
DEFUN ("global-key-binding", Fglobal_key_binding, Sglobal_key_binding, 1, 1, 0,
|
||||
"Return the binding for command KEYS in current global keymap only.\n\
|
||||
KEYS is a string, a sequence of keystrokes.\n\
|
||||
The binding is probably a symbol with a function definition.")
|
||||
The binding is probably a symbol with a function definition.\n\
|
||||
This function's return values are the same as those of lookup-key\n\
|
||||
(which see).")
|
||||
(keys)
|
||||
Lisp_Object keys;
|
||||
{
|
||||
|
|
@ -1089,6 +1098,9 @@ Control characters turn into C-whatever, etc.")
|
|||
register unsigned char c;
|
||||
char tem[6];
|
||||
|
||||
if (EVENT_HAS_PARAMETERS (key))
|
||||
key = EVENT_HEAD (key);
|
||||
|
||||
switch (XTYPE (key))
|
||||
{
|
||||
case Lisp_Int: /* Normal character */
|
||||
|
|
@ -1099,13 +1111,6 @@ Control characters turn into C-whatever, etc.")
|
|||
case Lisp_Symbol: /* Function key or event-symbol */
|
||||
return Fsymbol_name (key);
|
||||
|
||||
case Lisp_Cons: /* Mouse event */
|
||||
key = XCONS (key)->car;
|
||||
if (XTYPE (key) == Lisp_Symbol)
|
||||
return Fsymbol_name (key);
|
||||
/* Mouse events should have an identifying symbol as their car;
|
||||
fall through when this isn't the case. */
|
||||
|
||||
default:
|
||||
error ("KEY must be an integer, cons, or symbol.");
|
||||
}
|
||||
|
|
@ -1804,6 +1809,24 @@ If two active keymaps bind the same key, the keymap appearing earlier\n\
|
|||
in the list takes precedence.");
|
||||
Vminor_mode_map_alist = Qnil;
|
||||
|
||||
DEFVAR_LISP ("function-key-map", &Vfunction_key_map,
|
||||
"Keymap mapping ASCII function key sequences onto their preferred forms.\n\
|
||||
This allows Emacs to recognize function keys sent from ASCII\n\
|
||||
terminals at any point in a key sequence.\n\
|
||||
\n\
|
||||
The read-key-sequence function replaces subsequences bound by\n\
|
||||
function-key-map with their bindings. When the current local and global\n\
|
||||
keymaps have no binding for the current key sequence but\n\
|
||||
function-key-map binds a suffix of the sequence to a vector,\n\
|
||||
read-key-sequence replaces the matching suffix with its binding, and\n\
|
||||
continues with the new sequence.\n\
|
||||
\n\
|
||||
For example, suppose function-key-map binds `ESC O P' to [pf1].\n\
|
||||
Typing `ESC O P' to read-key-sequence would return [pf1]. Typing\n\
|
||||
`C-x ESC O P' would return [?\C-x pf1]. If [pf1] were a prefix\n\
|
||||
key, typing `ESC O P x' would return [pf1 x].");
|
||||
Vfunction_key_map = Fmake_sparse_keymap ();
|
||||
|
||||
Qsingle_key_description = intern ("single-key-description");
|
||||
staticpro (&Qsingle_key_description);
|
||||
|
||||
|
|
|
|||
19
src/xterm.c
19
src/xterm.c
|
|
@ -1286,21 +1286,12 @@ enum window_type
|
|||
text_window,
|
||||
};
|
||||
|
||||
/* Symbol returned in input stream to indicate mouse movement. */
|
||||
Lisp_Object Qmouse_moved;
|
||||
|
||||
/* Position of the mouse in characters */
|
||||
unsigned int x_mouse_x, x_mouse_y;
|
||||
|
||||
/* Emacs window the mouse is in, if any. */
|
||||
extern Lisp_Object Vmouse_window;
|
||||
|
||||
/* Offset in buffer of character under the pointer, or 0. */
|
||||
extern int mouse_buffer_offset;
|
||||
|
||||
/* Part of the screen the mouse is in. */
|
||||
extern Lisp_Object Vmouse_screen_part;
|
||||
|
||||
extern int buffer_posn_from_coords ();
|
||||
|
||||
/* Symbols from xfns.c to denote the different parts of a window. */
|
||||
|
|
@ -1701,10 +1692,6 @@ static char *events[] =
|
|||
#define XEvent XKeyPressedEvent
|
||||
#endif /* HAVE_X11 */
|
||||
|
||||
/* Symbols returned in the input stream to indicate various X events. */
|
||||
Lisp_Object Qmouse_click;
|
||||
Lisp_Object Qscrollbar_click;
|
||||
|
||||
/* Timestamp of enter window event. This is only used by XTread_socket,
|
||||
but we have to put it out here, since static variables within functions
|
||||
sometimes don't work. */
|
||||
|
|
@ -1888,7 +1875,6 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
|
|||
disabled; you don't want to spend time updating a
|
||||
display that won't ever be seen. */
|
||||
s->visible = 0;
|
||||
Vmouse_window = Vmouse_screen_part = Qnil;
|
||||
x_mouse_x = x_mouse_y = -1;
|
||||
}
|
||||
}
|
||||
|
|
@ -3323,7 +3309,6 @@ x_make_screen_visible (s)
|
|||
#endif /* not HAVE_X11 */
|
||||
}
|
||||
|
||||
XRaiseWindow (XDISPLAY s->display.x->window_desc);
|
||||
XFlushQueue ();
|
||||
|
||||
UNBLOCK_INPUT;
|
||||
|
|
@ -3761,10 +3746,6 @@ syms_of_xterm ()
|
|||
{
|
||||
staticpro (&invocation_name);
|
||||
invocation_name = Qnil;
|
||||
|
||||
Qmouse_moved = intern ("mouse-moved");
|
||||
Qmouse_click = intern ("mouse-click");
|
||||
Qscrollbar_click = intern ("scrollbar-click");
|
||||
}
|
||||
#endif /* HAVE_X11 */
|
||||
#endif /* HAVE_X_WINDOWS */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue