diff options
author | Kenichi Handa <handa@m17n.org> | 2003-09-08 12:53:41 +0000 |
---|---|---|
committer | Kenichi Handa <handa@m17n.org> | 2003-09-08 12:53:41 +0000 |
commit | 8f924df7df019cce90537647de2627581043b5c4 (patch) | |
tree | 6c40bd05679425e710d6b2e5649eae3da5e40a52 /src/cmds.c | |
parent | 463f5630a5e7cbe7f042bc1175d1fa1c4e98860f (diff) | |
parent | 9d4807432a01f9b3cc519fcfa3ea92a70ffa7f43 (diff) | |
download | emacs-8f924df7df019cce90537647de2627581043b5c4.tar.gz |
*** empty log message ***
Diffstat (limited to 'src/cmds.c')
-rw-r--r-- | src/cmds.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/cmds.c b/src/cmds.c index 4d7228e88ad..2e63b2fbb52 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA. */ #include "lisp.h" #include "commands.h" #include "buffer.h" -#include "charset.h" +#include "character.h" #include "syntax.h" #include "window.h" #include "keyboard.h" @@ -326,11 +326,11 @@ Whichever character you type to run this command is inserted. */) CHECK_NUMBER (n); /* Barf if the key that invoked this was not a character. */ - if (!INTEGERP (last_command_char)) + if (!CHARACTERP (last_command_char)) bitch_at_user (); { int character = translate_char (Vtranslation_table_for_input, - XINT (last_command_char), 0, 0, 0); + XINT (last_command_char)); if (XINT (n) >= 2 && NILP (current_buffer->overwrite_mode)) { int modified_char = character; @@ -394,7 +394,6 @@ internal_self_insert (c, noautofill) /* At first, get multi-byte form of C in STR. */ if (!NILP (current_buffer->enable_multibyte_characters)) { - c = unibyte_char_to_multibyte (c); len = CHAR_STRING (c, str); if (len == 1) /* If C has modifier bits, this makes C an appropriate @@ -471,10 +470,19 @@ internal_self_insert (c, noautofill) } hairy = 2; } + + if (NILP (current_buffer->enable_multibyte_characters)) + MAKE_CHAR_MULTIBYTE (c); + synt = SYNTAX (c); + if (!NILP (current_buffer->abbrev_mode) - && SYNTAX (c) != Sword + && synt != Sword && NILP (current_buffer->read_only) - && PT > BEGV && SYNTAX (XFASTINT (Fprevious_char ())) == Sword) + && PT > BEGV + && (!NILP (current_buffer->enable_multibyte_characters) + ? SYNTAX (XFASTINT (Fprevious_char ())) == Sword + : (SYNTAX (unibyte_char_to_multibyte (XFASTINT (Fprevious_char ()))) + == Sword))) { int modiff = MODIFF; Lisp_Object sym; @@ -542,7 +550,6 @@ internal_self_insert (c, noautofill) Vself_insert_face = Qnil; } - synt = SYNTAX (c); if ((synt == Sclose || synt == Smath) && !NILP (Vblink_paren_function) && INTERACTIVE && !noautofill) |