diff options
author | Jim Blandy <jimb@redhat.com> | 1991-07-28 14:50:08 +0000 |
---|---|---|
committer | Jim Blandy <jimb@redhat.com> | 1991-07-28 14:50:08 +0000 |
commit | 1d8d96fa607e344acd8731a3ba1d4894a808482b (patch) | |
tree | 5266bc4df085842acae5efc49d28ac6719914be0 /src | |
parent | 83b2229fc625ce74469dd02a9821b85edb7038a4 (diff) | |
download | emacs-1d8d96fa607e344acd8731a3ba1d4894a808482b.tar.gz emacs-1d8d96fa607e344acd8731a3ba1d4894a808482b.tar.bz2 emacs-1d8d96fa607e344acd8731a3ba1d4894a808482b.zip |
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r-- | src/keymap.c | 31 | ||||
-rw-r--r-- | src/window.c | 7 |
2 files changed, 25 insertions, 13 deletions
diff --git a/src/keymap.c b/src/keymap.c index 70d7109541e..7aeed24ce4b 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -142,10 +142,11 @@ synkey (frommap, fromchar, tomap, tochar) DEFUN ("keymapp", Fkeymapp, Skeymapp, 1, 1, 0, "Return t if ARG is a keymap.\n\ -A keymap is list (keymap . ALIST), where alist elements look like -(CHAR . DEFN) or (SYMBOL . DEFN), or a list (keymap VECTOR . ALIST) -where VECTOR is a 128-element vector of bindings for ASCII characters, -and ALIST is as above.") +\n\ +A keymap is list (keymap . ALIST), a list (keymap VECTOR . ALIST),\n\ +or a symbol whose function definition is a keymap is itself a keymap.\n\ +ALIST elements look like (CHAR . DEFN) or (SYMBOL . DEFN);\n\ +VECTOR is a 128-element vector of bindings for ASCII characters.") (object) Lisp_Object object; { @@ -335,7 +336,9 @@ DEFUN ("copy-keymap", Fcopy_keymap, Scopy_keymap, 1, 1, 0, "Return a copy of the keymap KEYMAP.\n\ The copy starts out with the same definitions of KEYMAP,\n\ but changing either the copy or KEYMAP does not affect the other.\n\ -Any key definitions that are subkeymaps are recursively copied.") +Any key definitions that are subkeymaps are recursively copied.\n\ +However, a key definition which is a symbol whose definition is a keymap\n\ +is not copied.") (keymap) Lisp_Object keymap; { @@ -357,9 +360,10 @@ Any key definitions that are subkeymaps are recursively copied.") table = Fcopy_sequence (table); for (i = 0; i < DENSE_TABLE_SIZE; i++) - if (! NULL (Fkeymapp (XVECTOR (table)->contents[i]))) - XVECTOR (table)->contents[i] - = Fcopy_keymap (XVECTOR (table)->contents[i]); + if (XTYPE (XVECTOR (copy)->contents[i]) != Lisp_Symbol) + if (! NULL (Fkeymapp (XVECTOR (table)->contents[i]))) + XVECTOR (table)->contents[i] + = Fcopy_keymap (XVECTOR (table)->contents[i]); XCONS (tail)->car = table; tail = XCONS (tail)->cdr; @@ -372,7 +376,9 @@ Any key definitions that are subkeymaps are recursively copied.") register Lisp_Object elt; elt = XCONS (tail)->car; - if (CONSP (elt) && ! NULL (Fkeymapp (XCONS (elt)->cdr))) + if (CONSP (elt) + && XTYPE (XCONS (elt)->cdr) != Lisp_Symbol + && ! NULL (Fkeymapp (XCONS (elt)->cdr))) XCONS (elt)->cdr = Fcopy_keymap (XCONS (elt)->cdr); tail = XCONS (tail)->cdr; @@ -667,8 +673,9 @@ KEY is a string representing a sequence of keystrokes.") DEFUN ("define-prefix-command", Fdefine_prefix_command, Sdefine_prefix_command, 1, 2, 0, "Define COMMAND as a prefix command.\n\ A new sparse keymap is stored as COMMAND's function definition and its value.\n\ -If a second optional argument MAPVAR is given, the map is stored as its\n\ -value instead of as COMMAND's value; but COMMAND is still defined as a function.") +If a second optional argument MAPVAR is given, the map is stored as\n\ +its value instead of as COMMAND's value; but COMMAND is still defined\n\ +as a function.") (name, mapvar) Lisp_Object name, mapvar; { @@ -959,7 +966,7 @@ Control characters turn into C-whatever, etc.") return Fsymbol_name (key); case Lisp_Cons: /* Mouse event */ - key = XCONS (key)->cdr; + key = XCONS (key)->car; if (XTYPE (key) == Lisp_Symbol) return Fsymbol_name (key); /* Mouse events should have an identifying symbol as their car; diff --git a/src/window.c b/src/window.c index 7685c0de3a5..a91b5e68aea 100644 --- a/src/window.c +++ b/src/window.c @@ -1321,7 +1321,7 @@ set_window_width (window, width, nodelete) } } -static int window_select_count; +int window_select_count; DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 2, 0, "Make WINDOW display BUFFER as its contents.\n\ @@ -2575,6 +2575,11 @@ init_window_once () Fset_window_buffer (minibuf_window, get_minibuffer (0)); selected_window = root_window; + /* Make sure this window seems more recently used than + a newly-created, never-selected window. Increment + window_select_count so the first selection ever will get + something newer than this. */ + XFASTINT (XWINDOW (selected_window)->use_time) = ++window_select_count; #endif /* not MULTI_SCREEN */ } |