normal: don't check has_mbyte

has_mbyte is always true for nvim.
This commit is contained in:
Jan Edmund Lazo 2018-08-17 21:49:12 -04:00
parent f46728c241
commit 7482aef113

View File

@ -3079,23 +3079,16 @@ size_t find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol,
* 1. skip to start of identifier/string * 1. skip to start of identifier/string
*/ */
col = startcol; col = startcol;
if (has_mbyte) {
while (ptr[col] != NUL) { while (ptr[col] != NUL) {
// Stop at a ']' to evaluate "a[x]". // Stop at a ']' to evaluate "a[x]".
if ((find_type & FIND_EVAL) && ptr[col] == ']') { if ((find_type & FIND_EVAL) && ptr[col] == ']') {
break; break;
} }
this_class = mb_get_class(ptr + col); this_class = mb_get_class(ptr + col);
if (this_class != 0 && (i == 1 || this_class != 1)) if (this_class != 0 && (i == 1 || this_class != 1)) {
break; break;
col += (*mb_ptr2len)(ptr + col);
}
} else {
while (ptr[col] != NUL
&& (i == 0 ? !vim_iswordc(ptr[col]) : ascii_iswhite(ptr[col]))
&& (!(find_type & FIND_EVAL) || ptr[col] != ']')) {
col++;
} }
col += utfc_ptr2len(ptr + col);
} }
// When starting on a ']' count it, so that we include the '['. // When starting on a ']' count it, so that we include the '['.
@ -3104,7 +3097,6 @@ size_t find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol,
/* /*
* 2. Back up to start of identifier/string. * 2. Back up to start of identifier/string.
*/ */
if (has_mbyte) {
// Remember class of character under cursor. // Remember class of character under cursor.
if ((find_type & FIND_EVAL) && ptr[col] == ']') { if ((find_type & FIND_EVAL) && ptr[col] == ']') {
this_class = mb_get_class((char_u *)"a"); this_class = mb_get_class((char_u *)"a");
@ -3112,7 +3104,7 @@ size_t find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol,
this_class = mb_get_class(ptr + col); this_class = mb_get_class(ptr + col);
} }
while (col > 0 && this_class != 0) { while (col > 0 && this_class != 0) {
prevcol = col - 1 - (*mb_head_off)(ptr, ptr + col - 1); prevcol = col - 1 - utf_head_off(ptr, ptr + col - 1);
prev_class = mb_get_class(ptr + prevcol); prev_class = mb_get_class(ptr + prevcol);
if (this_class != prev_class if (this_class != prev_class
&& (i == 0 && (i == 0
@ -3120,43 +3112,23 @@ size_t find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol,
|| (find_type & FIND_IDENT)) || (find_type & FIND_IDENT))
&& (!(find_type & FIND_EVAL) && (!(find_type & FIND_EVAL)
|| prevcol == 0 || prevcol == 0
|| !find_is_eval_item(ptr + prevcol, &prevcol, &bn, BACKWARD)) || !find_is_eval_item(ptr + prevcol, &prevcol, &bn, BACKWARD))) {
) {
break; break;
} }
col = prevcol; col = prevcol;
} }
/* If we don't want just any old string, or we've found an // If we don't want just any old string, or we've found an
* identifier, stop searching. */ // identifier, stop searching.
if (this_class > 2) if (this_class > 2) {
this_class = 2; this_class = 2;
if (!(find_type & FIND_STRING) || this_class == 2)
break;
} else {
while (col > 0
&& ((i == 0
? vim_iswordc(ptr[col - 1])
: (!ascii_iswhite(ptr[col - 1])
&& (!(find_type & FIND_IDENT)
|| !vim_iswordc(ptr[col - 1]))))
|| ((find_type & FIND_EVAL)
&& col > 1
&& find_is_eval_item(ptr + col - 1, &col, &bn, BACKWARD))
)) {
col--;
} }
if (!(find_type & FIND_STRING) || this_class == 2) {
/* If we don't want just any old string, or we've found an
* identifier, stop searching. */
if (!(find_type & FIND_STRING) || vim_iswordc(ptr[col]))
break; break;
} }
} }
if (ptr[col] == NUL || (i == 0 && ( if (ptr[col] == NUL || (i == 0 && this_class != 2)) {
has_mbyte ? this_class != 2 :
!vim_iswordc(ptr[col])))) {
/* /*
* didn't find an identifier or string * didn't find an identifier or string
*/ */
@ -3175,26 +3147,16 @@ size_t find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol,
bn = 0; bn = 0;
startcol -= col; startcol -= col;
col = 0; col = 0;
if (has_mbyte) { // Search for point of changing multibyte character class.
/* Search for point of changing multibyte character class. */
this_class = mb_get_class(ptr); this_class = mb_get_class(ptr);
while (ptr[col] != NUL while (ptr[col] != NUL
&& ((i == 0 ? mb_get_class(ptr + col) == this_class && ((i == 0
? mb_get_class(ptr + col) == this_class
: mb_get_class(ptr + col) != 0) : mb_get_class(ptr + col) != 0)
|| ((find_type & FIND_EVAL) || ((find_type & FIND_EVAL)
&& col <= (int)startcol && col <= (int)startcol
&& find_is_eval_item(ptr + col, &col, &bn, FORWARD)) && find_is_eval_item(ptr + col, &col, &bn, FORWARD)))) {
)) { col += utfc_ptr2len(ptr + col);
col += (*mb_ptr2len)(ptr + col);
}
} else {
while ((i == 0 ? vim_iswordc(ptr[col])
: (ptr[col] != NUL && !ascii_iswhite(ptr[col])))
|| ((find_type & FIND_EVAL)
&& col <= (int)startcol
&& find_is_eval_item(ptr + col, &col, &bn, FORWARD))) {
col++;
}
} }
assert(col >= 0); assert(col >= 0);