| To: vim_dev@googlegroups.com |
| Subject: Patch 7.4.292 |
| 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.292 |
| Problem: Searching for "a" does not match accented "a" with new regexp |
| engine, does match with old engine. (David Bürgin) |
| "ca" does not match "ca" with accented "a" with either engine. |
| Solution: Change the old engine, check for following composing character |
| also for single-byte patterns. |
| Files: src/regexp.c, src/testdir/test95.in, src/testdir/test95.ok |
| |
| |
| |
| |
| |
| *** 4692,4722 **** |
| /* match empty string always works; happens when "~" is |
| * empty. */ |
| } |
| ! else if (opnd[1] == NUL |
| #ifdef FEAT_MBYTE |
| && !(enc_utf8 && ireg_ic) |
| #endif |
| ) |
| ! ++reginput; /* matched a single char */ |
| ! else |
| ! { |
| ! len = (int)STRLEN(opnd); |
| ! /* Need to match first byte again for multi-byte. */ |
| ! if (cstrncmp(opnd, reginput, &len) != 0) |
| ! status = RA_NOMATCH; |
| #ifdef FEAT_MBYTE |
| /* Check for following composing character. */ |
| ! else if (enc_utf8 |
| ! && UTF_COMPOSINGLIKE(reginput, reginput + len)) |
| { |
| /* raaron: This code makes a composing character get |
| * ignored, which is the correct behavior (sometimes) |
| * for voweled Hebrew texts. */ |
| ! if (!ireg_icombine) |
| ! status = RA_NOMATCH; |
| } |
| #endif |
| ! else |
| reginput += len; |
| } |
| } |
| --- 4692,4728 ---- |
| /* match empty string always works; happens when "~" is |
| * empty. */ |
| } |
| ! else |
| ! { |
| ! if (opnd[1] == NUL |
| #ifdef FEAT_MBYTE |
| && !(enc_utf8 && ireg_ic) |
| #endif |
| ) |
| ! { |
| ! len = 1; /* matched a single byte above */ |
| ! } |
| ! else |
| ! { |
| ! /* Need to match first byte again for multi-byte. */ |
| ! len = (int)STRLEN(opnd); |
| ! if (cstrncmp(opnd, reginput, &len) != 0) |
| ! status = RA_NOMATCH; |
| ! } |
| #ifdef FEAT_MBYTE |
| /* Check for following composing character. */ |
| ! if (status != RA_NOMATCH |
| ! && enc_utf8 |
| ! && UTF_COMPOSINGLIKE(reginput, reginput + len) |
| ! && !ireg_icombine) |
| { |
| /* raaron: This code makes a composing character get |
| * ignored, which is the correct behavior (sometimes) |
| * for voweled Hebrew texts. */ |
| ! status = RA_NOMATCH; |
| } |
| #endif |
| ! if (status != RA_NOMATCH) |
| reginput += len; |
| } |
| } |
| |
| |
| |
| *** 50,55 **** |
| --- 50,57 ---- |
| :call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"]) |
| :call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
| :call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
| + :call add(tl, [2, "a", "ca\u0300t"]) |
| + :call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"]) |
| |
| |
| :"""" Test \Z |
| |
| |
| |
| *** 67,72 **** |
| --- 67,78 ---- |
| OK 0 - .ֹֻ |
| OK 1 - .ֹֻ |
| OK 2 - .ֹֻ |
| + OK 0 - a |
| + OK 1 - a |
| + OK 2 - a |
| + OK 0 - à |
| + OK 1 - à |
| + OK 2 - à |
| OK 0 - ú\Z |
| OK 1 - ú\Z |
| OK 2 - ú\Z |
| |
| |
| |
| *** 736,737 **** |
| --- 736,739 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 292, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 154. You fondle your mouse. |
| |
| /// 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 /// |