aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Love <[email protected]>2002-11-09 12:48:26 +0000
committerDave Love <[email protected]>2002-11-09 12:48:26 +0000
commita0acc6c756e59f6d0cef68dc703e660c9954ff60 (patch)
tree47209ddd6c352723bb9fedf3ce3ddafe6f6220f4 /src
parent867d5263229a1f56cc21c4ebd8e6ae3b5251ee03 (diff)
(command_loop_1): Apply Vtranslation_table_for_input
to self-inserting characters. (syms_of_keyboard) <keyboard-translate-table>: Doc fix.
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index ea1f82f563..2984a36973 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -412,7 +412,7 @@ Lisp_Object Vecho_keystrokes;
/* Form to evaluate (if non-nil) when Emacs is started. */
Lisp_Object Vtop_level;
-/* User-supplied string to translate input characters through. */
+/* User-supplied table to translate input characters. */
Lisp_Object Vkeyboard_translate_table;
/* Keymap mapping ASCII function key sequences onto their preferred forms. */
@@ -598,7 +598,7 @@ Lisp_Object Fthis_command_keys ();
Lisp_Object Qextended_command_history;
EMACS_TIME timer_check ();
-extern Lisp_Object Vhistory_length;
+extern Lisp_Object Vhistory_length, Vtranslation_table_for_input;
extern char *x_get_keysym_name ();
@@ -1629,10 +1629,12 @@ command_loop_1 ()
goto directly_done;
}
else if (EQ (Vthis_command, Qself_insert_command)
- /* Try this optimization only on ascii keystrokes. */
- && INTEGERP (last_command_char))
+ /* Try this optimization only on character keystrokes. */
+ && CHAR_VALID_P (last_command_char, 0))
{
- unsigned int c = XINT (last_command_char);
+ unsigned int c =
+ translate_char (Vtranslation_table_for_input,
+ XINT (last_command_char), 0, 0, 0);
int value;
if (NILP (Vexecuting_macro)
&& !EQ (minibuf_window, selected_window))
@@ -10900,7 +10902,10 @@ Each character is looked up in this string and the contents used instead.
The value may be a string, a vector, or a char-table.
If it is a string or vector of length N,
character codes N and up are untranslated.
-In a vector or a char-table, an element which is nil means "no translation". */);
+In a vector or a char-table, an element which is nil means "no translation".
+
+This is applied to the characters supplied to input methods, not their
+output. See also `translation-table-for-input'. */);
Vkeyboard_translate_table = Qnil;
DEFVAR_BOOL ("cannot-suspend", &cannot_suspend,