Created
July 9, 2015 11:11
-
-
Save ynkdir/388f69a870dfe78f79db to your computer and use it in GitHub Desktop.
patch for search('multi-byte', 'bce')
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -r bfc3682510d6 src/search.c | |
--- a/src/search.c Sat Jul 04 15:05:14 2015 +0200 | |
+++ b/src/search.c Thu Jul 09 19:13:39 2015 +0900 | |
@@ -548,6 +548,7 @@ | |
pos_T start_pos; | |
int at_first_line; | |
int extra_col; | |
+ int start_char_len; | |
int match_ok; | |
long nmatched; | |
int submatch = 0; | |
@@ -574,23 +575,37 @@ | |
/* When not accepting a match at the start position set "extra_col" to | |
* a non-zero value. Don't do that when starting at MAXCOL, since | |
* MAXCOL + 1 is zero. */ | |
- if ((options & SEARCH_START) || pos->col == MAXCOL) | |
- extra_col = 0; | |
+ if (pos->col == MAXCOL) | |
+ start_char_len = 0; | |
#ifdef FEAT_MBYTE | |
/* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ | |
- else if (dir != BACKWARD && has_mbyte | |
- && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count | |
- && pos->col < MAXCOL - 2) | |
+ else if (has_mbyte | |
+ && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count | |
+ && pos->col < MAXCOL - 2) | |
{ | |
ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; | |
if (*ptr == NUL) | |
- extra_col = 1; | |
+ start_char_len = 1; | |
else | |
- extra_col = (*mb_ptr2len)(ptr); | |
+ start_char_len = (*mb_ptr2len)(ptr); | |
} | |
#endif | |
else | |
- extra_col = 1; | |
+ start_char_len = 1; | |
+ if (dir == FORWARD) | |
+ { | |
+ if (options & SEARCH_START) | |
+ extra_col = 0; | |
+ else | |
+ extra_col = start_char_len; | |
+ } | |
+ else | |
+ { | |
+ if (options & SEARCH_START) | |
+ extra_col = start_char_len; | |
+ else | |
+ extra_col = 0; | |
+ } | |
start_pos = *pos; /* remember start pos for detecting no match */ | |
found = 0; /* default: not found */ | |
@@ -779,15 +794,15 @@ | |
|| (lnum + regmatch.endpos[0].lnum | |
== start_pos.lnum | |
&& (int)regmatch.endpos[0].col - 1 | |
- + extra_col | |
- <= (int)start_pos.col)) | |
+ < (int)start_pos.col | |
+ + extra_col)) | |
: (lnum + regmatch.startpos[0].lnum | |
< start_pos.lnum | |
|| (lnum + regmatch.startpos[0].lnum | |
== start_pos.lnum | |
&& (int)regmatch.startpos[0].col | |
- + extra_col | |
- <= (int)start_pos.col)))) | |
+ < (int)start_pos.col | |
+ + extra_col)))) | |
{ | |
match_ok = TRUE; | |
matchpos = regmatch.startpos[0]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment