}
\f
-
+#ifdef MULE
/* Return 1 if there is a word boundary between two word-constituent
characters C1 and C2 if they appear in this order, else return 0.
There is no word boundary between two word-constituent ASCII
&& word_boundary_p (c1, c2))
extern int word_boundary_p (Emchar c1, Emchar c2);
+#else
+static int
+word_constituent_p (struct buffer *buf, Bufpos pos,
+ struct Lisp_Char_Table *tab)
+{
+ enum syntaxcode code = SYNTAX_UNSAFE (tab, BUF_FETCH_CHAR (buf, pos));
+ return ((words_include_escapes &&
+ (code == Sescape || code == Scharquote))
+ || (code == Sword));
+}
+#endif
/* Return the position across COUNT words from FROM.
If that many words cannot be found before the end of the buffer, return 0.
{
Bufpos limit = count > 0 ? BUF_ZV (buf) : BUF_BEGV (buf);
struct Lisp_Char_Table *mirrortab = XCHAR_TABLE (buf->mirror_syntax_table);
+#ifdef MULE
Emchar ch0, ch1;
enum syntaxcode code;
+#endif
while (count > 0)
{
{
if (from == limit)
return 0;
+#ifdef MULE
ch0 = BUF_FETCH_CHAR (buf, from);
code = SYNTAX_UNSAFE (mirrortab, ch0);
+#else
+ if (word_constituent_p (buf, from, mirrortab))
+ break;
+#endif
from++;
+#ifdef MULE
if (words_include_escapes
&& (code == Sescape || code == Scharquote))
break;
if (code == Sword)
break;
+#endif
}
QUIT;
- while ( from != limit )
+ while ((from != limit)
+#ifndef MULE
+ && word_constituent_p (buf, from, mirrortab)
+#endif
+ )
{
+#ifdef MULE
ch1 = BUF_FETCH_CHAR (buf, from);
code = SYNTAX_UNSAFE (mirrortab, ch1);
if (!(words_include_escapes
&& (code == Sescape || code == Scharquote)))
if (code != Sword || WORD_BOUNDARY_P (ch0, ch1))
break;
- from++;
ch0 = ch1;
+#endif
+ from++;
}
count--;
}
{
if (from == limit)
return 0;
+#ifndef MULE
+ if (word_constituent_p (buf, from - 1, mirrortab))
+ break;
+#endif
from--;
+#ifdef MULE
ch1 = BUF_FETCH_CHAR (buf, from - 1);
code = SYNTAX_UNSAFE (mirrortab, ch1);
if (words_include_escapes
break;
if (code == Sword)
break;
+#endif
}
QUIT;
- while ( from != limit )
+ while ((from != limit)
+#ifndef MULE
+ && word_constituent_p (buf, from - 1, mirrortab)
+#endif
+ )
{
+#ifdef MULE
ch0 = BUF_FETCH_CHAR (buf, from - 1);
code = SYNTAX_UNSAFE (mirrortab, ch0);
if (!(words_include_escapes
&& (code == Sescape || code == Scharquote)))
if (code != Sword || WORD_BOUNDARY_P (ch0, ch1))
break;
- from--;
ch1 = ch0;
+#endif
+ from--;
}
count++;
}