diff options
author | Kenichi Handa <[email protected]> | 2002-09-03 04:08:14 +0000 |
---|---|---|
committer | Kenichi Handa <[email protected]> | 2002-09-03 04:08:14 +0000 |
commit | 9ad8bfb0a0645b3bc9a7bf1298fa5f6808f4d8d5 (patch) | |
tree | be0e87ae81a08d0c8d1feeaecf3c28045969690b /src/cmds.c | |
parent | 8d35924790e7166739309dc9a3986f43b9c5de63 (diff) |
(internal_self_insert): In a multibyte buffer, insert C
as is without converting it to unibyte. In a unibyte buffer,
convert C to multibyte before checking the syntax.
Diffstat (limited to 'src/cmds.c')
-rw-r--r-- | src/cmds.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/cmds.c b/src/cmds.c index 776e6b2808..21706d4ba8 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -360,7 +360,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 @@ -437,10 +436,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; @@ -508,7 +516,6 @@ internal_self_insert (c, noautofill) Vself_insert_face = Qnil; } - synt = SYNTAX (c); if ((synt == Sclose || synt == Smath) && !NILP (Vblink_paren_function) && INTERACTIVE && !noautofill) |