]> code.delx.au - gnu-emacs/blobdiff - src/cmds.c
*** empty log message ***
[gnu-emacs] / src / cmds.c
index 4d7228e88ad4be093fdd535d13b29cb613155eaf..2e63b2fbb52d8ad6f238a1ced6f8d4bf909f287f 100644 (file)
@@ -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)