aboutsummaryrefslogtreecommitdiffstats
path: root/src/cmds.c
diff options
context:
space:
mode:
authorKenichi Handa <[email protected]>2002-09-03 04:08:14 +0000
committerKenichi Handa <[email protected]>2002-09-03 04:08:14 +0000
commit9ad8bfb0a0645b3bc9a7bf1298fa5f6808f4d8d5 (patch)
treebe0e87ae81a08d0c8d1feeaecf3c28045969690b /src/cmds.c
parent8d35924790e7166739309dc9a3986f43b9c5de63 (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.c15
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)