| To: vim_dev@googlegroups.com |
| Subject: Patch 7.4.028 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.4.028 |
| Problem: Equivalence classes are not working for multi-byte characters. |
| Solution: Copy the rules from the old to the new regexp engine. Add a test |
| to check both engines. |
| Files: src/regexp_nfa.c, src/testdir/test44.in, src/testdir/test99.in, |
| src/testdir/test99.ok, src/testdir/Make_amiga.mak, |
| src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, |
| src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, |
| src/testdir/Makefile |
| |
| |
| |
| |
| |
| *** 742,748 **** |
| nfa_emit_equi_class(c) |
| int c; |
| { |
| ! #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT); |
| |
| #ifdef FEAT_MBYTE |
| if (enc_utf8 || STRCMP(p_enc, "latin1") == 0 |
| --- 742,753 ---- |
| nfa_emit_equi_class(c) |
| int c; |
| { |
| ! #define EMIT2(c) EMIT(c); EMIT(NFA_CONCAT); |
| ! #ifdef FEAT_MBYTE |
| ! # define EMITMBC(c) EMIT(c); EMIT(NFA_CONCAT); |
| ! #else |
| ! # define EMITMBC(c) |
| ! #endif |
| |
| #ifdef FEAT_MBYTE |
| if (enc_utf8 || STRCMP(p_enc, "latin1") == 0 |
| |
| *** 753,844 **** |
| { |
| case 'A': case 0300: case 0301: case 0302: |
| case 0303: case 0304: case 0305: |
| ! EMIT2('A'); EMIT2(0300); EMIT2(0301); |
| ! EMIT2(0302); EMIT2(0303); EMIT2(0304); |
| ! EMIT2(0305); |
| return OK; |
| |
| case 'C': case 0307: |
| ! EMIT2('C'); EMIT2(0307); |
| return OK; |
| |
| case 'E': case 0310: case 0311: case 0312: case 0313: |
| ! EMIT2('E'); EMIT2(0310); EMIT2(0311); |
| ! EMIT2(0312); EMIT2(0313); |
| return OK; |
| |
| case 'I': case 0314: case 0315: case 0316: case 0317: |
| ! EMIT2('I'); EMIT2(0314); EMIT2(0315); |
| ! EMIT2(0316); EMIT2(0317); |
| return OK; |
| |
| case 'N': case 0321: |
| ! EMIT2('N'); EMIT2(0321); |
| return OK; |
| |
| case 'O': case 0322: case 0323: case 0324: case 0325: |
| ! case 0326: |
| ! EMIT2('O'); EMIT2(0322); EMIT2(0323); |
| ! EMIT2(0324); EMIT2(0325); EMIT2(0326); |
| return OK; |
| |
| case 'U': case 0331: case 0332: case 0333: case 0334: |
| ! EMIT2('U'); EMIT2(0331); EMIT2(0332); |
| ! EMIT2(0333); EMIT2(0334); |
| return OK; |
| |
| case 'Y': case 0335: |
| ! EMIT2('Y'); EMIT2(0335); |
| return OK; |
| |
| case 'a': case 0340: case 0341: case 0342: |
| case 0343: case 0344: case 0345: |
| ! EMIT2('a'); EMIT2(0340); EMIT2(0341); |
| ! EMIT2(0342); EMIT2(0343); EMIT2(0344); |
| ! EMIT2(0345); |
| return OK; |
| |
| case 'c': case 0347: |
| ! EMIT2('c'); EMIT2(0347); |
| return OK; |
| |
| case 'e': case 0350: case 0351: case 0352: case 0353: |
| ! EMIT2('e'); EMIT2(0350); EMIT2(0351); |
| ! EMIT2(0352); EMIT2(0353); |
| return OK; |
| |
| case 'i': case 0354: case 0355: case 0356: case 0357: |
| ! EMIT2('i'); EMIT2(0354); EMIT2(0355); |
| ! EMIT2(0356); EMIT2(0357); |
| return OK; |
| |
| case 'n': case 0361: |
| ! EMIT2('n'); EMIT2(0361); |
| return OK; |
| |
| case 'o': case 0362: case 0363: case 0364: case 0365: |
| ! case 0366: |
| ! EMIT2('o'); EMIT2(0362); EMIT2(0363); |
| ! EMIT2(0364); EMIT2(0365); EMIT2(0366); |
| return OK; |
| |
| case 'u': case 0371: case 0372: case 0373: case 0374: |
| ! EMIT2('u'); EMIT2(0371); EMIT2(0372); |
| ! EMIT2(0373); EMIT2(0374); |
| return OK; |
| |
| case 'y': case 0375: case 0377: |
| ! EMIT2('y'); EMIT2(0375); EMIT2(0377); |
| return OK; |
| |
| ! default: |
| ! return FAIL; |
| } |
| } |
| |
| ! EMIT(c); |
| return OK; |
| #undef EMIT2 |
| } |
| |
| /* |
| --- 758,1095 ---- |
| { |
| case 'A': case 0300: case 0301: case 0302: |
| case 0303: case 0304: case 0305: |
| ! CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd) |
| ! CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2) |
| ! EMIT2('A'); EMIT2(0300); EMIT2(0301); EMIT2(0302); |
| ! EMIT2(0303); EMIT2(0304); EMIT2(0305); |
| ! EMITMBC(0x100) EMITMBC(0x102) EMITMBC(0x104) |
| ! EMITMBC(0x1cd) EMITMBC(0x1de) EMITMBC(0x1e0) |
| ! EMITMBC(0x1ea2) |
| ! return OK; |
| ! |
| ! case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06) |
| ! EMIT2('B'); EMITMBC(0x1e02) EMITMBC(0x1e06) |
| return OK; |
| |
| case 'C': case 0307: |
| ! CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c) |
| ! EMIT2('C'); EMIT2(0307); EMITMBC(0x106) EMITMBC(0x108) |
| ! EMITMBC(0x10a) EMITMBC(0x10c) |
| ! return OK; |
| ! |
| ! case 'D': CASEMBC(0x10e) CASEMBC(0x110) CASEMBC(0x1e0a) |
| ! CASEMBC(0x1e0e) CASEMBC(0x1e10) |
| ! EMIT2('D'); EMITMBC(0x10e) EMITMBC(0x110) EMITMBC(0x1e0a) |
| ! EMITMBC(0x1e0e) EMITMBC(0x1e10) |
| return OK; |
| |
| case 'E': case 0310: case 0311: case 0312: case 0313: |
| ! CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118) |
| ! CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc) |
| ! EMIT2('E'); EMIT2(0310); EMIT2(0311); EMIT2(0312); |
| ! EMIT2(0313); |
| ! EMITMBC(0x112) EMITMBC(0x114) EMITMBC(0x116) |
| ! EMITMBC(0x118) EMITMBC(0x11a) EMITMBC(0x1eba) |
| ! EMITMBC(0x1ebc) |
| ! return OK; |
| ! |
| ! case 'F': CASEMBC(0x1e1e) |
| ! EMIT2('F'); EMITMBC(0x1e1e) |
| ! return OK; |
| ! |
| ! case 'G': CASEMBC(0x11c) CASEMBC(0x11e) CASEMBC(0x120) |
| ! CASEMBC(0x122) CASEMBC(0x1e4) CASEMBC(0x1e6) CASEMBC(0x1f4) |
| ! CASEMBC(0x1e20) |
| ! EMIT2('G'); EMITMBC(0x11c) EMITMBC(0x11e) EMITMBC(0x120) |
| ! EMITMBC(0x122) EMITMBC(0x1e4) EMITMBC(0x1e6) |
| ! EMITMBC(0x1f4) EMITMBC(0x1e20) |
| ! return OK; |
| ! |
| ! case 'H': CASEMBC(0x124) CASEMBC(0x126) CASEMBC(0x1e22) |
| ! CASEMBC(0x1e26) CASEMBC(0x1e28) |
| ! EMIT2('H'); EMITMBC(0x124) EMITMBC(0x126) EMITMBC(0x1e22) |
| ! EMITMBC(0x1e26) EMITMBC(0x1e28) |
| return OK; |
| |
| case 'I': case 0314: case 0315: case 0316: case 0317: |
| ! CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e) |
| ! CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8) |
| ! EMIT2('I'); EMIT2(0314); EMIT2(0315); EMIT2(0316); |
| ! EMIT2(0317); EMITMBC(0x128) EMITMBC(0x12a) |
| ! EMITMBC(0x12c) EMITMBC(0x12e) EMITMBC(0x130) |
| ! EMITMBC(0x1cf) EMITMBC(0x1ec8) |
| ! return OK; |
| ! |
| ! case 'J': CASEMBC(0x134) |
| ! EMIT2('J'); EMITMBC(0x134) |
| ! return OK; |
| ! |
| ! case 'K': CASEMBC(0x136) CASEMBC(0x1e8) CASEMBC(0x1e30) |
| ! CASEMBC(0x1e34) |
| ! EMIT2('K'); EMITMBC(0x136) EMITMBC(0x1e8) EMITMBC(0x1e30) |
| ! EMITMBC(0x1e34) |
| ! return OK; |
| ! |
| ! case 'L': CASEMBC(0x139) CASEMBC(0x13b) CASEMBC(0x13d) |
| ! CASEMBC(0x13f) CASEMBC(0x141) CASEMBC(0x1e3a) |
| ! EMIT2('L'); EMITMBC(0x139) EMITMBC(0x13b) EMITMBC(0x13d) |
| ! EMITMBC(0x13f) EMITMBC(0x141) EMITMBC(0x1e3a) |
| ! return OK; |
| ! |
| ! case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40) |
| ! EMIT2('M'); EMITMBC(0x1e3e) EMITMBC(0x1e40) |
| return OK; |
| |
| case 'N': case 0321: |
| ! CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44) |
| ! CASEMBC(0x1e48) |
| ! EMIT2('N'); EMIT2(0321); EMITMBC(0x143) EMITMBC(0x145) |
| ! EMITMBC(0x147) EMITMBC(0x1e44) EMITMBC(0x1e48) |
| return OK; |
| |
| case 'O': case 0322: case 0323: case 0324: case 0325: |
| ! case 0326: case 0330: |
| ! CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0) |
| ! CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece) |
| ! EMIT2('O'); EMIT2(0322); EMIT2(0323); EMIT2(0324); |
| ! EMIT2(0325); EMIT2(0326); EMIT2(0330); |
| ! EMITMBC(0x14c) EMITMBC(0x14e) EMITMBC(0x150) |
| ! EMITMBC(0x1a0) EMITMBC(0x1d1) EMITMBC(0x1ea) |
| ! EMITMBC(0x1ec) EMITMBC(0x1ece) |
| ! return OK; |
| ! |
| ! case 'P': case 0x1e54: case 0x1e56: |
| ! EMIT2('P'); EMITMBC(0x1e54) EMITMBC(0x1e56) |
| ! return OK; |
| ! |
| ! case 'R': CASEMBC(0x154) CASEMBC(0x156) CASEMBC(0x158) |
| ! CASEMBC(0x1e58) CASEMBC(0x1e5e) |
| ! EMIT2('R'); EMITMBC(0x154) EMITMBC(0x156) EMITMBC(0x158) |
| ! EMITMBC(0x1e58) EMITMBC(0x1e5e) |
| ! return OK; |
| ! |
| ! case 'S': CASEMBC(0x15a) CASEMBC(0x15c) CASEMBC(0x15e) |
| ! CASEMBC(0x160) CASEMBC(0x1e60) |
| ! EMIT2('S'); EMITMBC(0x15a) EMITMBC(0x15c) EMITMBC(0x15e) |
| ! EMITMBC(0x160) EMITMBC(0x1e60) |
| ! return OK; |
| ! |
| ! case 'T': CASEMBC(0x162) CASEMBC(0x164) CASEMBC(0x166) |
| ! CASEMBC(0x1e6a) CASEMBC(0x1e6e) |
| ! EMIT2('T'); EMITMBC(0x162) EMITMBC(0x164) EMITMBC(0x166) |
| ! EMITMBC(0x1e6a) EMITMBC(0x1e6e) |
| return OK; |
| |
| case 'U': case 0331: case 0332: case 0333: case 0334: |
| ! CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e) |
| ! CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3) |
| ! CASEMBC(0x1ee6) |
| ! EMIT2('U'); EMIT2(0331); EMIT2(0332); EMIT2(0333); |
| ! EMIT2(0334); EMITMBC(0x168) EMITMBC(0x16a) |
| ! EMITMBC(0x16c) EMITMBC(0x16e) EMITMBC(0x170) |
| ! EMITMBC(0x172) EMITMBC(0x1af) EMITMBC(0x1d3) |
| ! EMITMBC(0x1ee6) |
| ! return OK; |
| ! |
| ! case 'V': CASEMBC(0x1e7c) |
| ! EMIT2('V'); EMITMBC(0x1e7c) |
| ! return OK; |
| ! |
| ! case 'W': CASEMBC(0x174) CASEMBC(0x1e80) CASEMBC(0x1e82) |
| ! CASEMBC(0x1e84) CASEMBC(0x1e86) |
| ! EMIT2('W'); EMITMBC(0x174) EMITMBC(0x1e80) EMITMBC(0x1e82) |
| ! EMITMBC(0x1e84) EMITMBC(0x1e86) |
| ! return OK; |
| ! |
| ! case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c) |
| ! EMIT2('X'); EMITMBC(0x1e8a) EMITMBC(0x1e8c) |
| return OK; |
| |
| case 'Y': case 0335: |
| ! CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2) |
| ! CASEMBC(0x1ef6) CASEMBC(0x1ef8) |
| ! EMIT2('Y'); EMIT2(0335); EMITMBC(0x176) EMITMBC(0x178) |
| ! EMITMBC(0x1e8e) EMITMBC(0x1ef2) EMITMBC(0x1ef6) |
| ! EMITMBC(0x1ef8) |
| ! return OK; |
| ! |
| ! case 'Z': CASEMBC(0x179) CASEMBC(0x17b) CASEMBC(0x17d) |
| ! CASEMBC(0x1b5) CASEMBC(0x1e90) CASEMBC(0x1e94) |
| ! EMIT2('Z'); EMITMBC(0x179) EMITMBC(0x17b) EMITMBC(0x17d) |
| ! EMITMBC(0x1b5) EMITMBC(0x1e90) EMITMBC(0x1e94) |
| return OK; |
| |
| case 'a': case 0340: case 0341: case 0342: |
| case 0343: case 0344: case 0345: |
| ! CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce) |
| ! CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3) |
| ! EMIT2('a'); EMIT2(0340); EMIT2(0341); EMIT2(0342); |
| ! EMIT2(0343); EMIT2(0344); EMIT2(0345); |
| ! EMITMBC(0x101) EMITMBC(0x103) EMITMBC(0x105) |
| ! EMITMBC(0x1ce) EMITMBC(0x1df) EMITMBC(0x1e1) |
| ! EMITMBC(0x1ea3) |
| ! return OK; |
| ! |
| ! case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07) |
| ! EMIT2('b'); EMITMBC(0x1e03) EMITMBC(0x1e07) |
| return OK; |
| |
| case 'c': case 0347: |
| ! CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d) |
| ! EMIT2('c'); EMIT2(0347); EMITMBC(0x107) EMITMBC(0x109) |
| ! EMITMBC(0x10b) EMITMBC(0x10d) |
| ! return OK; |
| ! |
| ! case 'd': CASEMBC(0x10f) CASEMBC(0x111) CASEMBC(0x1d0b) |
| ! CASEMBC(0x1e11) |
| ! EMIT2('d'); EMITMBC(0x10f) EMITMBC(0x111) EMITMBC(0x1e0b) |
| ! EMITMBC(0x01e0f) EMITMBC(0x1e11) |
| return OK; |
| |
| case 'e': case 0350: case 0351: case 0352: case 0353: |
| ! CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119) |
| ! CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd) |
| ! EMIT2('e'); EMIT2(0350); EMIT2(0351); EMIT2(0352); |
| ! EMIT2(0353); EMITMBC(0x113) EMITMBC(0x115) |
| ! EMITMBC(0x117) EMITMBC(0x119) EMITMBC(0x11b) |
| ! EMITMBC(0x1ebb) EMITMBC(0x1ebd) |
| ! return OK; |
| ! |
| ! case 'f': CASEMBC(0x1e1f) |
| ! EMIT2('f'); EMITMBC(0x1e1f) |
| ! return OK; |
| ! |
| ! case 'g': CASEMBC(0x11d) CASEMBC(0x11f) CASEMBC(0x121) |
| ! CASEMBC(0x123) CASEMBC(0x1e5) CASEMBC(0x1e7) CASEMBC(0x1f5) |
| ! CASEMBC(0x1e21) |
| ! EMIT2('g'); EMITMBC(0x11d) EMITMBC(0x11f) EMITMBC(0x121) |
| ! EMITMBC(0x123) EMITMBC(0x1e5) EMITMBC(0x1e7) |
| ! EMITMBC(0x1f5) EMITMBC(0x1e21) |
| ! return OK; |
| ! |
| ! case 'h': CASEMBC(0x125) CASEMBC(0x127) CASEMBC(0x1e23) |
| ! CASEMBC(0x1e27) CASEMBC(0x1e29) CASEMBC(0x1e96) |
| ! EMIT2('h'); EMITMBC(0x125) EMITMBC(0x127) EMITMBC(0x1e23) |
| ! EMITMBC(0x1e27) EMITMBC(0x1e29) EMITMBC(0x1e96) |
| return OK; |
| |
| case 'i': case 0354: case 0355: case 0356: case 0357: |
| ! CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f) |
| ! CASEMBC(0x1d0) CASEMBC(0x1ec9) |
| ! EMIT2('i'); EMIT2(0354); EMIT2(0355); EMIT2(0356); |
| ! EMIT2(0357); EMITMBC(0x129) EMITMBC(0x12b) |
| ! EMITMBC(0x12d) EMITMBC(0x12f) EMITMBC(0x1d0) |
| ! EMITMBC(0x1ec9) |
| ! return OK; |
| ! |
| ! case 'j': CASEMBC(0x135) CASEMBC(0x1f0) |
| ! EMIT2('j'); EMITMBC(0x135) EMITMBC(0x1f0) |
| ! return OK; |
| ! |
| ! case 'k': CASEMBC(0x137) CASEMBC(0x1e9) CASEMBC(0x1e31) |
| ! CASEMBC(0x1e35) |
| ! EMIT2('k'); EMITMBC(0x137) EMITMBC(0x1e9) EMITMBC(0x1e31) |
| ! EMITMBC(0x1e35) |
| ! return OK; |
| ! |
| ! case 'l': CASEMBC(0x13a) CASEMBC(0x13c) CASEMBC(0x13e) |
| ! CASEMBC(0x140) CASEMBC(0x142) CASEMBC(0x1e3b) |
| ! EMIT2('l'); EMITMBC(0x13a) EMITMBC(0x13c) EMITMBC(0x13e) |
| ! EMITMBC(0x140) EMITMBC(0x142) EMITMBC(0x1e3b) |
| ! return OK; |
| ! |
| ! case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41) |
| ! EMIT2('m'); EMITMBC(0x1e3f) EMITMBC(0x1e41) |
| return OK; |
| |
| case 'n': case 0361: |
| ! CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149) |
| ! CASEMBC(0x1e45) CASEMBC(0x1e49) |
| ! EMIT2('n'); EMIT2(0361); EMITMBC(0x144) EMITMBC(0x146) |
| ! EMITMBC(0x148) EMITMBC(0x149) EMITMBC(0x1e45) |
| ! EMITMBC(0x1e49) |
| return OK; |
| |
| case 'o': case 0362: case 0363: case 0364: case 0365: |
| ! case 0366: case 0370: |
| ! CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1) |
| ! CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf) |
| ! EMIT2('o'); EMIT2(0362); EMIT2(0363); EMIT2(0364); |
| ! EMIT2(0365); EMIT2(0366); EMIT2(0370); |
| ! EMITMBC(0x14d) EMITMBC(0x14f) EMITMBC(0x151) |
| ! EMITMBC(0x1a1) EMITMBC(0x1d2) EMITMBC(0x1eb) |
| ! EMITMBC(0x1ed) EMITMBC(0x1ecf) |
| ! return OK; |
| ! |
| ! case 'p': CASEMBC(0x1e55) CASEMBC(0x1e57) |
| ! EMIT2('p'); EMITMBC(0x1e55) EMITMBC(0x1e57) |
| ! return OK; |
| ! |
| ! case 'r': CASEMBC(0x155) CASEMBC(0x157) CASEMBC(0x159) |
| ! CASEMBC(0x1e59) CASEMBC(0x1e5f) |
| ! EMIT2('r'); EMITMBC(0x155) EMITMBC(0x157) EMITMBC(0x159) |
| ! EMITMBC(0x1e59) EMITMBC(0x1e5f) |
| ! return OK; |
| ! |
| ! case 's': CASEMBC(0x15b) CASEMBC(0x15d) CASEMBC(0x15f) |
| ! CASEMBC(0x161) CASEMBC(0x1e61) |
| ! EMIT2('s'); EMITMBC(0x15b) EMITMBC(0x15d) EMITMBC(0x15f) |
| ! EMITMBC(0x161) EMITMBC(0x1e61) |
| ! return OK; |
| ! |
| ! case 't': CASEMBC(0x163) CASEMBC(0x165) CASEMBC(0x167) |
| ! CASEMBC(0x1e6b) CASEMBC(0x1e6f) CASEMBC(0x1e97) |
| ! EMIT2('t'); EMITMBC(0x163) EMITMBC(0x165) EMITMBC(0x167) |
| ! EMITMBC(0x1e6b) EMITMBC(0x1e6f) EMITMBC(0x1e97) |
| return OK; |
| |
| case 'u': case 0371: case 0372: case 0373: case 0374: |
| ! CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f) |
| ! CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4) |
| ! CASEMBC(0x1ee7) |
| ! EMIT2('u'); EMIT2(0371); EMIT2(0372); EMIT2(0373); |
| ! EMIT2(0374); EMITMBC(0x169) EMITMBC(0x16b) |
| ! EMITMBC(0x16d) EMITMBC(0x16f) EMITMBC(0x171) |
| ! EMITMBC(0x173) EMITMBC(0x1b0) EMITMBC(0x1d4) |
| ! EMITMBC(0x1ee7) |
| ! return OK; |
| ! |
| ! case 'v': CASEMBC(0x1e7d) |
| ! EMIT2('v'); EMITMBC(0x1e7d) |
| ! return OK; |
| ! |
| ! case 'w': CASEMBC(0x175) CASEMBC(0x1e81) CASEMBC(0x1e83) |
| ! CASEMBC(0x1e85) CASEMBC(0x1e87) CASEMBC(0x1e98) |
| ! EMIT2('w'); EMITMBC(0x175) EMITMBC(0x1e81) EMITMBC(0x1e83) |
| ! EMITMBC(0x1e85) EMITMBC(0x1e87) EMITMBC(0x1e98) |
| ! return OK; |
| ! |
| ! case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d) |
| ! EMIT2('x'); EMITMBC(0x1e8b) EMITMBC(0x1e8d) |
| return OK; |
| |
| case 'y': case 0375: case 0377: |
| ! CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99) |
| ! CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9) |
| ! EMIT2('y'); EMIT2(0375); EMIT2(0377); EMITMBC(0x177) |
| ! EMITMBC(0x1e8f) EMITMBC(0x1e99) EMITMBC(0x1ef3) |
| ! EMITMBC(0x1ef7) EMITMBC(0x1ef9) |
| ! return OK; |
| ! |
| ! case 'z': CASEMBC(0x17a) CASEMBC(0x17c) CASEMBC(0x17e) |
| ! CASEMBC(0x1b6) CASEMBC(0x1e91) CASEMBC(0x1e95) |
| ! EMIT2('z'); EMITMBC(0x17a) EMITMBC(0x17c) EMITMBC(0x17e) |
| ! EMITMBC(0x1b6) EMITMBC(0x1e91) EMITMBC(0x1e95) |
| return OK; |
| |
| ! /* default: character itself */ |
| } |
| } |
| |
| ! EMIT2(c); |
| return OK; |
| #undef EMIT2 |
| + #undef EMITMBC |
| } |
| |
| /* |
| |
| |
| |
| *** 1,9 **** |
| --- 1,11 ---- |
| Tests for regexp with multi-byte encoding and various magic settings. |
| Test matchstr() with a count and multi-byte chars. |
| + See test99 for exactly the same test with re=2. |
| |
| STARTTEST |
| :so mbyte.vim |
| :set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo |
| + :set re=1 |
| /^1 |
| /a*b\{2}c\+/e |
| x/\Md\*e\{2}f\+/e |
| |
| |
| |
| |
| --- 1,68 ---- |
| + Tests for regexp with multi-byte encoding and various magic settings. |
| + Test matchstr() with a count and multi-byte chars. |
| + See test44 for exactly the same test with re=1. |
| + |
| + STARTTEST |
| + :so mbyte.vim |
| + :set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo |
| + :set re=2 |
| + /^1 |
| + /a*b\{2}c\+/e |
| + x/\Md\*e\{2}f\+/e |
| + x:set nomagic |
| + /g\*h\{2}i\+/e |
| + x/\mj*k\{2}l\+/e |
| + x/\vm*n{2}o+/e |
| + x/\V^aa$ |
| + x:set magic |
| + /\v(a)(b)\2\1\1/e |
| + x/\V[ab]\(\[xy]\)\1 |
| + x:" Now search for multi-byte without composing char |
| + /ม |
| + x:" Now search for multi-byte with composing char |
| + /ม๠|
| + x:" find word by change of word class |
| + /ã¡\<ã«ã¨\>㯠|
| + x:" Test \%u, [\u] and friends |
| + /\%u20ac |
| + x/[\u4f7f\u5929]\+ |
| + x/\%U12345678 |
| + x/[\U1234abcd\u1234\uabcd] |
| + x/\%d21879b |
| + x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e |
| + x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e |
| + x:" Test backwards search from a multi-byte char |
| + /x |
| + x?. |
| + x:let @w=':%s#comb[i]nations#ÅÌá¹£ÌmÌ¥ÌαÌÌÌ#g' |
| + :@w |
| + :?^1?,$w! test.out |
| + :e! test.out |
| + G:put =matchstr(\"××××\", \".\", 0, 2) " × |
| + :put =matchstr(\"××××\", \"..\", 0, 2) " ×× |
| + :put =matchstr(\"××××\", \".\", 0, 0) " × |
| + :put =matchstr(\"××××\", \".\", 4, -1) " × |
| + :w! |
| + :qa! |
| + ENDTEST |
| + |
| + 1 a aa abb abbccc |
| + 2 d dd dee deefff |
| + 3 g gg ghh ghhiii |
| + 4 j jj jkk jkklll |
| + 5 m mm mnn mnnooo |
| + 6 x ^aa$ x |
| + 7 (a)(b) abbaa |
| + 8 axx [ab]xx |
| + 9 หมà¹x à¸à¸¡x |
| + a à¸à¸¡x หมà¹x |
| + b ã¡ã«ã¨ã¯ |
| + c x ¬â¬x |
| + d 天使x |
| + e ü
¸y |
| + f ü¯z |
| + g aå·bb |
| + h AÃÃÃÃÃÃ
ÄÄÄÇÇÇ áº¢ Bá¸á¸ CÃÄÄÄÄ DÄÄá¸á¸á¸ EÃÃÃÃÄÄÄÄÄẺẼ FḠGÄÄÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃÃÃÃĨĪĬĮİÇá» JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṠNÃÅÅ
Åá¹á¹ OÃÃÃÃÃÃÅÅÅÆ ÇǪǬỠPá¹á¹ Q RÅÅÅá¹á¹ SÅÅÅÅ á¹ TŢŤŦṪṮ UÃÃÃÃŨŪŬŮŰŲƯÇỦ Vá¹¼ WÅ´áºáºáºáº Xáºáº YÃŶŸáºá»²á»¶á»¸ ZŹŻŽƵáºáº |
| + i aà áâãäåÄÄÄ
ÇÇǡả bá¸á¸ cçÄÄÄÄ dÄÄá¸á¸á¸ eèéêëÄÄÄÄÄẻẽ fḠgÄÄġģǥǧǵḡ hĥħḣḧḩẠiìÃîïĩīÄįÇá» jĵǰ kķǩḱḵ lĺļľÅÅḻ mḿṠnñÅÅÅÅá¹
á¹ oòóôõöøÅÅÅÆ¡ÇÇ«Çá» pá¹á¹ q rÅÅÅá¹á¹ sÅÅÅšṡ tţťŧṫṯẠuùúûüũūÅůűųưÇủ vá¹½ wŵáºáºáº
áºáº xáºáº yýÿŷáºáºá»³á»·á»¹ zźżžƶáºáº |
| + j 0123â¤x |
| + k combinations |
| |
| |
| |
| |
| --- 1,24 ---- |
| + 1 a aa abb abbcc |
| + 2 d dd dee deeff |
| + 3 g gg ghh ghhii |
| + 4 j jj jkk jkkll |
| + 5 m mm mnn mnnoo |
| + 6 x aa$ x |
| + 7 (a)(b) abba |
| + 8 axx ab]xx |
| + 9 หมà¹x à¸x |
| + a à¸à¸¡x หx |
| + b ã«ã¨ã¯ |
| + c x ¬x |
| + d 使x |
| + e y |
| + f z |
| + g abb |
| + h AÃÃÃÃÃÃ
ÄÄÄÇÇÇ áº¢ Bá¸á¸ CÃÄÄÄÄ DÄÄá¸á¸á¸ EÃÃÃÃÄÄÄÄÄẺẼ FḠGÄÄÄ Ä¢Ç¤Ç¦Ç´á¸ HĤĦḢḦḨ IÃÃÃÃĨĪĬĮİÇá» JÄ´ KĶǨḰḴ LĹĻĽĿÅḺ MḾṠNÃÅÅ
Åá¹á¹ OÃÃÃÃÃÃÅÅÅÆ ÇǪǬỠPá¹á¹ Q RÅÅÅá¹á¹ SÅÅÅÅ á¹ TŢŤŦṪṮ UÃÃÃÃŨŪŬŮŰŲƯÇỦ Vá¹¼ WÅ´áºáºáºáº Xáºáº YÃŶŸáºá»²á»¶á»¸ ZŹŻŽƵẠ|
| + i aà áâãäåÄÄÄ
ÇÇǡả bá¸á¸ cçÄÄÄÄ dÄÄá¸á¸á¸ eèéêëÄÄÄÄÄẻẽ fḠgÄÄġģǥǧǵḡ hĥħḣḧḩẠiìÃîïĩīÄįÇá» jĵǰ kķǩḱḵ lĺļľÅÅḻ mḿṠnñÅÅÅÅá¹
á¹ oòóôõöøÅÅÅÆ¡ÇÇ«Çá» pá¹á¹ q rÅÅÅá¹á¹ sÅÅÅšṡ tţťŧṫṯẠuùúûüũūÅůűųưÇủ vá¹½ wŵáºáºáº
áºáº xáºáº yýÿŷáºáºá»³á»·á»¹ zźżžƶẠ|
| + j 012⤠|
| + k ÅÌá¹£ÌmÌ¥ÌαÌÌÌ |
| + × |
| + ×× |
| + × |
| + × |
| |
| |
| |
| *** 33,39 **** |
| test76.out test77.out test78.out test79.out test80.out \ |
| test81.out test82.out test83.out test84.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test97.out test98.out |
| |
| .SUFFIXES: .in .out |
| |
| --- 33,40 ---- |
| test76.out test77.out test78.out test79.out test80.out \ |
| test81.out test82.out test83.out test84.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test97.out test98.out \ |
| ! test99.out |
| |
| .SUFFIXES: .in .out |
| |
| |
| *** 148,150 **** |
| --- 149,152 ---- |
| test96.out: test96.in |
| test97.out: test97.in |
| test98.out: test98.in |
| + test99.out: test99.in |
| |
| |
| |
| *** 32,38 **** |
| test79.out test80.out test81.out test82.out test83.out \ |
| test84.out test85.out test86.out test87.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test98.out |
| |
| SCRIPTS32 = test50.out test70.out |
| |
| --- 32,38 ---- |
| test79.out test80.out test81.out test82.out test83.out \ |
| test84.out test85.out test86.out test87.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test98.out test99.out |
| |
| SCRIPTS32 = test50.out test70.out |
| |
| |
| |
| |
| *** 52,58 **** |
| test79.out test80.out test81.out test82.out test83.out \ |
| test84.out test85.out test86.out test87.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test98.out |
| |
| SCRIPTS32 = test50.out test70.out |
| |
| --- 52,58 ---- |
| test79.out test80.out test81.out test82.out test83.out \ |
| test84.out test85.out test86.out test87.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test98.out test99.out |
| |
| SCRIPTS32 = test50.out test70.out |
| |
| |
| |
| |
| *** 34,40 **** |
| test76.out test77.out test78.out test79.out test80.out \ |
| test81.out test82.out test83.out test84.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test98.out |
| |
| .SUFFIXES: .in .out |
| |
| --- 34,40 ---- |
| test76.out test77.out test78.out test79.out test80.out \ |
| test81.out test82.out test83.out test84.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test98.out test99.out |
| |
| .SUFFIXES: .in .out |
| |
| |
| |
| |
| *** 4,10 **** |
| # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> |
| # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> |
| # |
| ! # Last change: 2013 Jul 09 |
| # |
| # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. |
| # Edit the lines in the Configuration section below to select. |
| --- 4,10 ---- |
| # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com> |
| # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> |
| # |
| ! # Last change: 2013 Sep 19 |
| # |
| # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. |
| # Edit the lines in the Configuration section below to select. |
| |
| *** 78,84 **** |
| test77.out test78.out test79.out test80.out test81.out \ |
| test82.out test83.out test84.out test88.out test89.out \ |
| test90.out test91.out test92.out test93.out test94.out \ |
| ! test95.out test96.out test97.out test98.out |
| |
| # Known problems: |
| # Test 30: a problem around mac format - unknown reason |
| --- 78,84 ---- |
| test77.out test78.out test79.out test80.out test81.out \ |
| test82.out test83.out test84.out test88.out test89.out \ |
| test90.out test91.out test92.out test93.out test94.out \ |
| ! test95.out test96.out test97.out test98.out test99.out |
| |
| # Known problems: |
| # Test 30: a problem around mac format - unknown reason |
| |
| |
| |
| *** 29,35 **** |
| test79.out test80.out test81.out test82.out test83.out \ |
| test84.out test85.out test86.out test87.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test97.out test98.out |
| |
| SCRIPTS_GUI = test16.out |
| |
| --- 29,36 ---- |
| test79.out test80.out test81.out test82.out test83.out \ |
| test84.out test85.out test86.out test87.out test88.out \ |
| test89.out test90.out test91.out test92.out test93.out \ |
| ! test94.out test95.out test96.out test97.out test98.out \ |
| ! test99.out |
| |
| SCRIPTS_GUI = test16.out |
| |
| |
| |
| |
| *** 740,741 **** |
| --- 740,743 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 28, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 232. You start conversations with, "Have you gotten an ISDN line?" |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |