diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-01-30 13:59:37 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-01-30 13:59:37 +0100 |
commit | f813a1883f767ad9c4a7a44b5f42cee312d53bc0 (patch) | |
tree | d9b6149762cad2f6069933a2f45e84c637c1f670 /src | |
parent | 8d616172389a666e74c47c4e41f5cd9a17a38268 (diff) | |
download | vim-git-f813a1883f767ad9c4a7a44b5f42cee312d53bc0.tar.gz |
updated for version 7.3.789v7.3.789
Problem: "\k" in regexp does not work in other window.
Solution: Use the right buffer. (Yukihiro Nakadaira)
Diffstat (limited to 'src')
-rw-r--r-- | src/mbyte.c | 10 | ||||
-rw-r--r-- | src/proto/mbyte.pro | 1 | ||||
-rw-r--r-- | src/regexp.c | 15 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 20 insertions, 8 deletions
diff --git a/src/mbyte.c b/src/mbyte.c index b896477fc..80f669135 100644 --- a/src/mbyte.c +++ b/src/mbyte.c @@ -869,11 +869,19 @@ remove_bom(s) mb_get_class(p) char_u *p; { + return mb_get_class_buf(p, curbuf); +} + + int +mb_get_class_buf(p, buf) + char_u *p; + buf_T *buf; +{ if (MB_BYTE2LEN(p[0]) == 1) { if (p[0] == NUL || vim_iswhite(p[0])) return 0; - if (vim_iswordc(p[0])) + if (vim_iswordc_buf(p[0], buf)) return 2; return 1; } diff --git a/src/proto/mbyte.pro b/src/proto/mbyte.pro index 8c0788c7f..c599dacec 100644 --- a/src/proto/mbyte.pro +++ b/src/proto/mbyte.pro @@ -4,6 +4,7 @@ char_u *mb_init __ARGS((void)); int bomb_size __ARGS((void)); void remove_bom __ARGS((char_u *s)); int mb_get_class __ARGS((char_u *p)); +int mb_get_class_buf __ARGS((char_u *p, buf_T *buf)); int dbcs_class __ARGS((unsigned lead, unsigned trail)); int latin_char2len __ARGS((int c)); int latin_char2bytes __ARGS((int c, char_u *buf)); diff --git a/src/regexp.c b/src/regexp.c index e62aae557..b6506a03a 100644 --- a/src/regexp.c +++ b/src/regexp.c @@ -4013,8 +4013,8 @@ static int reg_prev_class __ARGS((void)); reg_prev_class() { if (reginput > regline) - return mb_get_class(reginput - 1 - - (*mb_head_off)(regline, reginput - 1)); + return mb_get_class_buf(reginput - 1 + - (*mb_head_off)(regline, reginput - 1), reg_buf); return -1; } @@ -4304,7 +4304,7 @@ regmatch(scan) int this_class; /* Get class of current and previous char (if it exists). */ - this_class = mb_get_class(reginput); + this_class = mb_get_class_buf(reginput, reg_buf); if (this_class <= 1) status = RA_NOMATCH; /* not on a word at all */ else if (reg_prev_class() == this_class) @@ -4328,7 +4328,7 @@ regmatch(scan) int this_class, prev_class; /* Get class of current and previous char (if it exists). */ - this_class = mb_get_class(reginput); + this_class = mb_get_class_buf(reginput, reg_buf); prev_class = reg_prev_class(); if (this_class == prev_class || prev_class == 0 || prev_class == 1) @@ -4365,14 +4365,14 @@ regmatch(scan) break; case KWORD: - if (!vim_iswordp(reginput)) + if (!vim_iswordp_buf(reginput, reg_buf)) status = RA_NOMATCH; else ADVANCE_REGINPUT(); break; case SKWORD: - if (VIM_ISDIGIT(*reginput) || !vim_iswordp(reginput)) + if (VIM_ISDIGIT(*reginput) || !vim_iswordp_buf(reginput, reg_buf)) status = RA_NOMATCH; else ADVANCE_REGINPUT(); @@ -5734,7 +5734,8 @@ regrepeat(p, maxcount) case SKWORD + ADD_NL: while (count < maxcount) { - if (vim_iswordp(scan) && (testval || !VIM_ISDIGIT(*scan))) + if (vim_iswordp_buf(scan, reg_buf) + && (testval || !VIM_ISDIGIT(*scan))) { mb_ptr_adv(scan); } diff --git a/src/version.c b/src/version.c index 8c19a1519..ecf21ac96 100644 --- a/src/version.c +++ b/src/version.c @@ -726,6 +726,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 789, +/**/ 788, /**/ 787, |