aboutsummaryrefslogtreecommitdiffstats
path: root/src/syntax.c
diff options
context:
space:
mode:
authorKenichi Handa2002-08-19 11:00:39 +0000
committerKenichi Handa2002-08-19 11:00:39 +0000
commit8cb8232a21ae09cec807c3ccf0a58def3414a595 (patch)
tree2844d272829d0a0c3c5f7cd6c2f5d48159ca3f97 /src/syntax.c
parent5a7128a6e8c5945f36ee26fe8b2a3bada02892fc (diff)
downloademacs-8cb8232a21ae09cec807c3ccf0a58def3414a595.tar.gz
emacs-8cb8232a21ae09cec807c3ccf0a58def3414a595.zip
(scan_words): Don't treat characters belonging to
different scripts constituting a work.
Diffstat (limited to 'src/syntax.c')
-rw-r--r--src/syntax.c68
1 files changed, 40 insertions, 28 deletions
diff --git a/src/syntax.c b/src/syntax.c
index ba86b91fc03..716b3be6f6c 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -1216,19 +1216,25 @@ scan_words (from, count)
1216 from_byte = CHAR_TO_BYTE (from); 1216 from_byte = CHAR_TO_BYTE (from);
1217 } 1217 }
1218 else 1218 else
1219 while (1) 1219 {
1220 { 1220 Lisp_Object script;
1221 if (from == end) break; 1221
1222 UPDATE_SYNTAX_TABLE_FORWARD (from); 1222 script = CHAR_TABLE_REF (Vchar_script_table, ch0);
1223 ch1 = FETCH_CHAR (from_byte); 1223 while (1)
1224 code = SYNTAX (ch1); 1224 {
1225 if (code != Sword 1225 if (from == end) break;
1226 && (! words_include_escapes 1226 UPDATE_SYNTAX_TABLE_FORWARD (from);
1227 || (code != Sescape && code != Scharquote))) 1227 ch1 = FETCH_CHAR (from_byte);
1228 code = SYNTAX (ch1);
1229 if ((code != Sword
1230 && (! words_include_escapes
1231 || (code != Sescape && code != Scharquote)))
1232 || ! EQ (CHAR_TABLE_REF (Vchar_script_table, ch1), script))
1228 break; 1233 break;
1229 INC_BOTH (from, from_byte); 1234 INC_BOTH (from, from_byte);
1230 ch0 = ch1; 1235 ch0 = ch1;
1231 } 1236 }
1237 }
1232 1238
1233 count--; 1239 count--;
1234 } 1240 }
@@ -1265,23 +1271,29 @@ scan_words (from, count)
1265 from_byte = CHAR_TO_BYTE (from); 1271 from_byte = CHAR_TO_BYTE (from);
1266 } 1272 }
1267 else 1273 else
1268 while (1) 1274 {
1269 { 1275 Lisp_Object script;
1270 int temp_byte;
1271 1276
1272 if (from == beg) 1277 script = CHAR_TABLE_REF (Vchar_script_table, ch1);
1273 break; 1278 while (1)
1274 temp_byte = dec_bytepos (from_byte); 1279 {
1275 UPDATE_SYNTAX_TABLE_BACKWARD (from); 1280 int temp_byte;
1276 ch0 = FETCH_CHAR (temp_byte); 1281
1277 code = SYNTAX (ch0); 1282 if (from == beg)
1278 if (code != Sword 1283 break;
1279 && (! words_include_escapes 1284 temp_byte = dec_bytepos (from_byte);
1280 || (code != Sescape && code != Scharquote))) 1285 UPDATE_SYNTAX_TABLE_BACKWARD (from);
1281 break; 1286 ch0 = FETCH_CHAR (temp_byte);
1282 DEC_BOTH (from, from_byte); 1287 code = SYNTAX (ch0);
1283 ch1 = ch0; 1288 if ((code != Sword
1284 } 1289 && (! words_include_escapes
1290 || (code != Sescape && code != Scharquote)))
1291 || ! EQ (CHAR_TABLE_REF (Vchar_script_table, ch0), script))
1292 break;
1293 DEC_BOTH (from, from_byte);
1294 ch1 = ch0;
1295 }
1296 }
1285 count++; 1297 count++;
1286 } 1298 }
1287 1299