Merge from emacs--devo--0
[bpt/emacs.git] / src / abbrev.c
index da1724e..a58c4ec 100644 (file)
@@ -27,7 +27,7 @@ Boston, MA 02110-1301, USA.  */
 #include "commands.h"
 #include "buffer.h"
 #include "window.h"
-#include "charset.h"
+#include "character.h"
 #include "syntax.h"
 
 /* An abbrev table is an obarray.
@@ -198,7 +198,7 @@ abbrev_check_chars (abbrev, global)
         {
           /* Copied from SYNTAX in syntax.h, except using FOLLOW_PARENT. */
           Lisp_Object syntax_temp
-            = SYNTAX_ENTRY_FOLLOW_PARENT (Vstandard_syntax_table, c);
+            = CHAR_TABLE_REF (Vstandard_syntax_table, c);
           if ( (CONSP (syntax_temp)
                 ? (enum syntaxcode) (XINT (XCAR (syntax_temp)) & 0xff)
                 : Swhitespace) != Sword ) badchars[nbad++] = c;
@@ -470,9 +470,15 @@ Returns the abbrev symbol, if expansion took place.  */)
          int pos = wordstart_byte;
 
          /* Find the initial.  */
-         while (pos < PT_BYTE
-                && SYNTAX (*BUF_BYTE_ADDRESS (current_buffer, pos)) != Sword)
-           pos++;
+         if (multibyte)
+           while (pos < PT_BYTE
+                  && SYNTAX (FETCH_MULTIBYTE_CHAR (pos)) != Sword)
+             INC_POS (pos);
+         else
+           while (pos < PT_BYTE
+                  && (SYNTAX (*BUF_BYTE_ADDRESS (current_buffer, pos))
+                      != Sword))
+             pos++;
 
          /* Change just that.  */
          pos = BYTE_TO_CHAR (pos);