]> git.eshelyaron.com Git - emacs.git/commitdiff
(internal_self_insert): In a multibyte buffer, insert C
authorKenichi Handa <handa@m17n.org>
Tue, 3 Sep 2002 04:08:14 +0000 (04:08 +0000)
committerKenichi Handa <handa@m17n.org>
Tue, 3 Sep 2002 04:08:14 +0000 (04:08 +0000)
as is without converting it to unibyte.  In a unibyte buffer,
convert C to multibyte before checking the syntax.

src/cmds.c

index 776e6b280836cb09f0dea1453e6b8c25baf9c0d7..21706d4ba80a0e0475659edd2f0a5f75c151d029 100644 (file)
@@ -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)