Mercurial > emacs
changeset 83315:13371344a3ba
Make function-key-map a terminal-local variable (move it inside the kboard struct).
* src/keyboard.h (kboard): Move Vfunction_key_map inside the kboard struct.
* src/keyboard.c (Vfunction_key_map): Remove declaration.
(read_key_sequence, init_kboard): Update references to Vfunction_key_map.
(syms_of_keyboard): Declare function-key-map as a terminal-local variable.
(mark_kboards): Mark Vfunction_key_map.
* src/keymap.c (Vfunction_key_map): Remove.
(Fdescribe_buffer_bindings): Update references to Vfunction_key_map.
(syms_of_keymap): Remove DEFVAR for Vfunction_key_map.
* src/term.c (term_get_fkeys_1): Update references to Vfunction_key_map.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-355
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 25 Jun 2005 16:34:30 +0000 |
parents | d07fdd5d7d4e |
children | 102194c6d773 |
files | src/keyboard.c src/keyboard.h src/keymap.c src/term.c |
diffstat | 4 files changed, 40 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keyboard.c Sat Jun 25 15:00:08 2005 +0000 +++ b/src/keyboard.c Sat Jun 25 16:34:30 2005 +0000 @@ -417,9 +417,6 @@ /* User-supplied table to translate input characters. */ Lisp_Object Vkeyboard_translate_table; -/* Keymap mapping ASCII function key sequences onto their preferred forms. */ -extern Lisp_Object Vfunction_key_map; - /* Another keymap that maps key sequences into key sequences. This one takes precedence over ordinary definitions. */ extern Lisp_Object Vkey_translation_map; @@ -8654,7 +8651,7 @@ last_nonmenu_event = Qnil; delayed_switch_frame = Qnil; - fkey.map = fkey.parent = Vfunction_key_map; + fkey.map = fkey.parent = current_kboard->Vfunction_key_map; keytran.map = keytran.parent = Vkey_translation_map; /* If there is no translation-map, turn off scanning. */ fkey.start = fkey.end = KEYMAPP (fkey.map) ? 0 : bufsize + 1; @@ -10766,6 +10763,7 @@ kb->reference_count = 0; kb->Vsystem_key_alist = Qnil; kb->system_key_syms = Qnil; + kb->Vfunction_key_map = Fmake_sparse_keymap (Qnil); kb->Vdefault_minibuffer_frame = Qnil; } @@ -11465,6 +11463,29 @@ numeric keysym code (sans the \"system-specific\" bit 1<<28) and SYMBOL is its name. */); + DEFVAR_KBOARD ("function-key-map", Vfunction_key_map, + doc: /* Keymap mapping ASCII function key sequences onto their preferred forms. +This allows Emacs to recognize function keys sent from ASCII +terminals at any point in a key sequence. + +The `read-key-sequence' function replaces any subsequence bound by +`function-key-map' with its binding. More precisely, when the active +keymaps have no binding for the current key sequence but +`function-key-map' binds a suffix of the sequence to a vector or string, +`read-key-sequence' replaces the matching suffix with its binding, and +continues with the new sequence. + +The events that come from bindings in `function-key-map' are not +themselves looked up in `function-key-map'. + +For example, suppose `function-key-map' binds `ESC O P' to [f1]. +Typing `ESC O P' to `read-key-sequence' would return [f1]. Typing +`C-x ESC O P' would return [?\\C-x f1]. If [f1] were a prefix +key, typing `ESC O P x' would return [f1 x]. + +`function-key-map' has a separate binding for each display device. +See Info node `(elisp)Multiple displays'. */); + DEFVAR_LISP ("deferred-action-list", &Vdeferred_action_list, doc: /* List of deferred actions to be performed at a later time. The precise format isn't relevant here; we just check whether it is nil. */); @@ -11628,6 +11649,7 @@ mark_object (kb->Vlast_kbd_macro); mark_object (kb->Vsystem_key_alist); mark_object (kb->system_key_syms); + mark_object (kb->Vfunction_key_map); mark_object (kb->Vdefault_minibuffer_frame); mark_object (kb->echo_string); }
--- a/src/keyboard.h Sat Jun 25 15:00:08 2005 +0000 +++ b/src/keyboard.h Sat Jun 25 16:34:30 2005 +0000 @@ -120,6 +120,11 @@ /* Cache for modify_event_symbol. */ Lisp_Object system_key_syms; + /* Keymap mapping ASCII function key sequences onto their + preferred forms. Initialized by the terminal-specific lisp + files. See the DEFVAR for more documentation. */ + Lisp_Object Vfunction_key_map; + /* Minibufferless frames on this display use this frame's minibuffer. */ Lisp_Object Vdefault_minibuffer_frame; @@ -187,10 +192,6 @@ /* Nonzero means polling for input is temporarily suppressed. */ extern int poll_suppress_count; -/* Keymap mapping ASCII function key sequences onto their preferred forms. - Initialized by the terminal-specific lisp files. */ -extern Lisp_Object Vfunction_key_map; - /* Vector holding the key sequence that invoked the current command. It is reused for each command, and it may be longer than the current sequence; this_command_key_count indicates how many elements
--- a/src/keymap.c Sat Jun 25 15:00:08 2005 +0000 +++ b/src/keymap.c Sat Jun 25 16:34:30 2005 +0000 @@ -79,11 +79,6 @@ /* List of emulation mode keymap alists. */ Lisp_Object Vemulation_mode_map_alists; -/* 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; - /* Keymap mapping ASCII function key sequences onto their preferred forms. */ Lisp_Object Vkey_translation_map; @@ -2939,8 +2934,8 @@ "\f\nGlobal Bindings", nomenu, 0, 1, 0); /* Print the function-key-map translations under this prefix. */ - if (!NILP (Vfunction_key_map)) - describe_map_tree (Vfunction_key_map, 0, Qnil, prefix, + if (!NILP (current_kboard->Vfunction_key_map)) + describe_map_tree (current_kboard->Vfunction_key_map, 0, Qnil, prefix, "\f\nFunction key map translations", nomenu, 1, 0, 0); UNGCPRO; @@ -3802,28 +3797,6 @@ `minor-mode-map-alist' and `minor-mode-overriding-map-alist'. */); Vemulation_mode_map_alists = Qnil; - - DEFVAR_LISP ("function-key-map", &Vfunction_key_map, - doc: /* Keymap mapping ASCII function key sequences onto their preferred forms. -This allows Emacs to recognize function keys sent from ASCII -terminals at any point in a key sequence. - -The `read-key-sequence' function replaces any subsequence bound by -`function-key-map' with its binding. More precisely, when the active -keymaps have no binding for the current key sequence but -`function-key-map' binds a suffix of the sequence to a vector or string, -`read-key-sequence' replaces the matching suffix with its binding, and -continues with the new sequence. - -The events that come from bindings in `function-key-map' are not -themselves looked up in `function-key-map'. - -For example, suppose `function-key-map' binds `ESC O P' to [f1]. -Typing `ESC O P' to `read-key-sequence' would return [f1]. Typing -`C-x ESC O P' would return [?\\C-x f1]. If [f1] were a prefix -key, typing `ESC O P x' would return [f1 x]. */); - Vfunction_key_map = Fmake_sparse_keymap (Qnil); - DEFVAR_LISP ("key-translation-map", &Vkey_translation_map, doc: /* Keymap of key translations that can override keymaps. This keymap works like `function-key-map', but comes after that,
--- a/src/term.c Sat Jun 25 15:00:08 2005 +0000 +++ b/src/term.c Sat Jun 25 16:34:30 2005 +0000 @@ -1344,13 +1344,13 @@ /* This can happen if CANNOT_DUMP or with strange options. */ if (!initialized) - Vfunction_key_map = Fmake_sparse_keymap (Qnil); + current_kboard->Vfunction_key_map = Fmake_sparse_keymap (Qnil); for (i = 0; i < (sizeof (keys)/sizeof (keys[0])); i++) { char *sequence = tgetstr (keys[i].cap, address); if (sequence) - Fdefine_key (Vfunction_key_map, build_string (sequence), + Fdefine_key (current_kboard->Vfunction_key_map, build_string (sequence), Fmake_vector (make_number (1), intern (keys[i].name))); } @@ -1370,13 +1370,13 @@ if (k0) /* Define f0 first, so that f10 takes precedence in case the key sequences happens to be the same. */ - Fdefine_key (Vfunction_key_map, build_string (k0), + Fdefine_key (current_kboard->Vfunction_key_map, build_string (k0), Fmake_vector (make_number (1), intern ("f0"))); - Fdefine_key (Vfunction_key_map, build_string (k_semi), + Fdefine_key (current_kboard->Vfunction_key_map, build_string (k_semi), Fmake_vector (make_number (1), intern ("f10"))); } else if (k0) - Fdefine_key (Vfunction_key_map, build_string (k0), + Fdefine_key (current_kboard->Vfunction_key_map, build_string (k0), Fmake_vector (make_number (1), intern (k0_name))); } @@ -1399,7 +1399,7 @@ if (sequence) { sprintf (fkey, "f%d", i); - Fdefine_key (Vfunction_key_map, build_string (sequence), + Fdefine_key (current_kboard->Vfunction_key_map, build_string (sequence), Fmake_vector (make_number (1), intern (fkey))); } @@ -1416,7 +1416,7 @@ { \ char *sequence = tgetstr (cap2, address); \ if (sequence) \ - Fdefine_key (Vfunction_key_map, build_string (sequence), \ + Fdefine_key (current_kboard->Vfunction_key_map, build_string (sequence), \ Fmake_vector (make_number (1), \ intern (sym))); \ }