diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/diff.c | 10 | ||||
-rw-r--r-- | src/nvim/edit.c | 34 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 31 | ||||
-rw-r--r-- | src/nvim/getchar.c | 2 | ||||
-rw-r--r-- | src/nvim/memline.c | 14 | ||||
-rw-r--r-- | src/nvim/misc1.c | 4 | ||||
-rw-r--r-- | src/nvim/normal.c | 56 | ||||
-rw-r--r-- | src/nvim/ops.c | 2 | ||||
-rw-r--r-- | src/nvim/path.c | 2 | ||||
-rw-r--r-- | src/nvim/regexp_nfa.c | 3 | ||||
-rw-r--r-- | src/nvim/screen.c | 2 | ||||
-rw-r--r-- | src/nvim/search.c | 22 | ||||
-rw-r--r-- | src/nvim/syntax.c | 4 | ||||
-rw-r--r-- | src/nvim/window.c | 2 |
14 files changed, 66 insertions, 122 deletions
diff --git a/src/nvim/diff.c b/src/nvim/diff.c index cd0aa40ecd..4bfe67c9d3 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -1962,12 +1962,10 @@ bool diff_find_change(win_T *wp, linenr_T lnum, int *startp, int *endp) } } - if (has_mbyte) { - // Move back to first byte of character in both lines (may - // have "nn^" in line_org and "n^ in line_new). - si_org -= utf_head_off(line_org, line_org + si_org); - si_new -= utf_head_off(line_new, line_new + si_new); - } + // Move back to first byte of character in both lines (may + // have "nn^" in line_org and "n^ in line_new). + si_org -= utf_head_off(line_org, line_org + si_org); + si_new -= utf_head_off(line_new, line_new + si_new); if (*startp > si_org) { *startp = si_org; diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 82c74a00c5..c60f85ed4c 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -1556,13 +1556,10 @@ void display_dollar(colnr_T col) save_col = curwin->w_cursor.col; curwin->w_cursor.col = col; - if (has_mbyte) { - char_u *p; - /* If on the last byte of a multi-byte move to the first byte. */ - p = get_cursor_line_ptr(); - curwin->w_cursor.col -= utf_head_off(p, p + col); - } + /* If on the last byte of a multi-byte move to the first byte. */ + char_u *p = get_cursor_line_ptr(); + curwin->w_cursor.col -= utf_head_off(p, p + col); curs_columns(FALSE); /* recompute w_wrow and w_wcol */ if (curwin->w_wcol < curwin->w_width) { edit_putchar('$', FALSE); @@ -4589,22 +4586,15 @@ static int ins_complete(int c, bool enable_pum) } else { /* Search the point of change class of multibyte character * or not a word single byte character backward. */ - if (has_mbyte) { - int base_class; - int head_off; - - startcol -= utf_head_off(line, line + startcol); - base_class = mb_get_class(line + startcol); - while (--startcol >= 0) { - head_off = utf_head_off(line, line + startcol); - if (base_class != mb_get_class(line + startcol - - head_off)) - break; - startcol -= head_off; - } - } else - while (--startcol >= 0 && vim_iswordc(line[startcol])) - ; + startcol -= utf_head_off(line, line + startcol); + int base_class = mb_get_class(line + startcol); + while (--startcol >= 0) { + int head_off = utf_head_off(line, line + startcol); + if (base_class != mb_get_class(line + startcol + - head_off)) + break; + startcol -= head_off; + } compl_col += ++startcol; compl_length = (int)curs_col - startcol; if (compl_length == 1) { diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 4d3a3c3e96..b15dea00fe 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -725,9 +725,7 @@ static int command_line_execute(VimState *state, int key) s->j = ccline.cmdpos; s->i = (int)(s->xpc.xp_pattern - ccline.cmdbuff); while (--s->j > s->i) { - if (has_mbyte) { - s->j -= utf_head_off(ccline.cmdbuff, ccline.cmdbuff + s->j); - } + s->j -= utf_head_off(ccline.cmdbuff, ccline.cmdbuff + s->j); if (vim_ispathsep(ccline.cmdbuff[s->j])) { found = true; break; @@ -747,9 +745,7 @@ static int command_line_execute(VimState *state, int key) s->j = ccline.cmdpos - 1; s->i = (int)(s->xpc.xp_pattern - ccline.cmdbuff); while (--s->j > s->i) { - if (has_mbyte) { - s->j -= utf_head_off(ccline.cmdbuff, ccline.cmdbuff + s->j); - } + s->j -= utf_head_off(ccline.cmdbuff, ccline.cmdbuff + s->j); if (vim_ispathsep(ccline.cmdbuff[s->j]) #ifdef BACKSLASH_IN_FILENAME && vim_strchr((const char_u *)" *?[{`$%#", ccline.cmdbuff[s->j + 1]) @@ -1436,19 +1432,16 @@ static int command_line_handle_key(CommandLineState *s) } do { --ccline.cmdpos; - if (has_mbyte) { // move to first byte of char - ccline.cmdpos -= utf_head_off(ccline.cmdbuff, - ccline.cmdbuff + ccline.cmdpos); - } + // Move to first byte of possibly multibyte char. + ccline.cmdpos -= utf_head_off(ccline.cmdbuff, + ccline.cmdbuff + ccline.cmdpos); ccline.cmdspos -= cmdline_charsize(ccline.cmdpos); } while (ccline.cmdpos > 0 && (s->c == K_S_LEFT || s->c == K_C_LEFT || (mod_mask & (MOD_MASK_SHIFT|MOD_MASK_CTRL))) && ccline.cmdbuff[ccline.cmdpos - 1] != ' '); - if (has_mbyte) { - set_cmdspos_cursor(); - } + set_cmdspos_cursor(); return command_line_not_changed(s); @@ -2268,14 +2261,10 @@ getexmodeline ( if (c1 == BS || c1 == K_BS || c1 == DEL || c1 == K_DEL || c1 == K_KDEL) { if (!GA_EMPTY(&line_ga)) { - if (has_mbyte) { - p = (char_u *)line_ga.ga_data; - p[line_ga.ga_len] = NUL; - len = utf_head_off(p, p + line_ga.ga_len - 1) + 1; - line_ga.ga_len -= len; - } else { - line_ga.ga_len--; - } + p = (char_u *)line_ga.ga_data; + p[line_ga.ga_len] = NUL; + len = utf_head_off(p, p + line_ga.ga_len - 1) + 1; + line_ga.ga_len -= len; goto redraw; } continue; diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 8c6c3dfd7e..c8f29435e3 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -2129,7 +2129,7 @@ static int vgetorpeek(int advance) curwin->w_wcol = curwin->w_width - 1; col = curwin->w_cursor.col - 1; } - if (has_mbyte && col > 0 && curwin->w_wcol > 0) { + if (col > 0 && curwin->w_wcol > 0) { /* Correct when the cursor is on the right halve * of a double-wide character. */ ptr = get_cursor_line_ptr(); diff --git a/src/nvim/memline.c b/src/nvim/memline.c index ca89b7a345..6831e48719 100644 --- a/src/nvim/memline.c +++ b/src/nvim/memline.c @@ -4035,24 +4035,18 @@ int incl(pos_T *lp) int dec(pos_T *lp) { - char_u *p; - lp->coladd = 0; if (lp->col > 0) { // still within line lp->col--; - if (has_mbyte) { - p = ml_get(lp->lnum); - lp->col -= utf_head_off(p, p + lp->col); - } + char_u *p = ml_get(lp->lnum); + lp->col -= utf_head_off(p, p + lp->col); return 0; } if (lp->lnum > 1) { // there is a prior line lp->lnum--; - p = ml_get(lp->lnum); + char_u *p = ml_get(lp->lnum); lp->col = (colnr_T)STRLEN(p); - if (has_mbyte) { - lp->col -= utf_head_off(p, p + lp->col); - } + lp->col -= utf_head_off(p, p + lp->col); return 1; } return -1; // at start of file diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index 93886351ac..08d1df7f08 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -1646,9 +1646,7 @@ int del_bytes(colnr_T count, bool fixpos_arg, bool use_delcombine) ) { --curwin->w_cursor.col; curwin->w_cursor.coladd = 0; - if (has_mbyte) - curwin->w_cursor.col -= - utf_head_off(oldp, oldp + curwin->w_cursor.col); + curwin->w_cursor.col -= utf_head_off(oldp, oldp + curwin->w_cursor.col); } count = oldlen - col; movelen = 1; diff --git a/src/nvim/normal.c b/src/nvim/normal.c index 0cd4486d40..d36c0e42a4 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -3058,47 +3058,29 @@ size_t find_ident_at_pos(win_T *wp, linenr_T lnum, colnr_T startcol, /* * 2. Back up to start of identifier/string. */ - if (has_mbyte) { - /* Remember class of character under cursor. */ - this_class = mb_get_class(ptr + col); - while (col > 0 && this_class != 0) { - prevcol = col - 1 - utf_head_off(ptr, ptr + col - 1); - prev_class = mb_get_class(ptr + prevcol); - if (this_class != prev_class - && (i == 0 - || prev_class == 0 - || (find_type & FIND_IDENT)) - ) - break; - col = prevcol; - } - - /* If we don't want just any old string, or we've found an - * identifier, stop searching. */ - if (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])))) - )) - --col; - - /* 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])) + /* Remember class of character under cursor. */ + this_class = mb_get_class(ptr + col); + while (col > 0 && this_class != 0) { + prevcol = col - 1 - utf_head_off(ptr, ptr + col - 1); + prev_class = mb_get_class(ptr + prevcol); + if (this_class != prev_class + && (i == 0 + || prev_class == 0 + || (find_type & FIND_IDENT)) + ) break; + col = prevcol; } + + /* If we don't want just any old string, or we've found an + * identifier, stop searching. */ + if (this_class > 2) + this_class = 2; + if (!(find_type & FIND_STRING) || this_class == 2) + break; } - if (ptr[col] == NUL || (i == 0 && ( - has_mbyte ? this_class != 2 : - !vim_iswordc(ptr[col])))) { + if (ptr[col] == NUL || (i == 0 && this_class != 2)) { /* * didn't find an identifier or string */ diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 410cddb2be..dbdab4026d 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -520,7 +520,7 @@ static void block_insert(oparg_T *oap, char_u *s, int b_insert, struct block_def } } - if (has_mbyte && spaces > 0) { + if (spaces > 0) { int off; // Avoid starting halfway through a multi-byte character. diff --git a/src/nvim/path.c b/src/nvim/path.c index 08b904534b..eeb374cf44 100644 --- a/src/nvim/path.c +++ b/src/nvim/path.c @@ -1819,7 +1819,7 @@ void path_fix_case(char_u *name) int after_pathsep(const char *b, const char *p) { return p > b && vim_ispathsep(p[-1]) - && (!has_mbyte || utf_head_off((char_u *)b, (char_u *)p - 1) == 0); + && utf_head_off((char_u *)b, (char_u *)p - 1) == 0; } /* diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c index b52b39c722..c81121286d 100644 --- a/src/nvim/regexp_nfa.c +++ b/src/nvim/regexp_nfa.c @@ -4639,8 +4639,7 @@ static int recursive_regmatch(nfa_state_T *state, nfa_pim_T *pim, nfa_regprog_T } if ((int)(reginput - regline) >= state->val) { reginput -= state->val; - if (has_mbyte) - reginput -= utf_head_off(regline, reginput); + reginput -= utf_head_off(regline, reginput); } else reginput = regline; } diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 9d92c9aa71..b79e8f4546 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -3430,7 +3430,7 @@ win_line ( // Found last space before word: check for line break. if (wp->w_p_lbr && c0 == c && vim_isbreak(c) && !vim_isbreak((int)(*ptr))) { - int mb_off = has_mbyte ? utf_head_off(line, ptr - 1) : 0; + int mb_off = utf_head_off(line, ptr - 1); char_u *p = ptr - (mb_off + 1); // TODO: is passing p for start of the line OK? n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol, NULL) - 1; diff --git a/src/nvim/search.c b/src/nvim/search.c index 10d7d3320d..8e2c23b006 100644 --- a/src/nvim/search.c +++ b/src/nvim/search.c @@ -818,8 +818,7 @@ int searchit( } } else { --pos->col; - if (has_mbyte - && pos->lnum <= buf->b_ml.ml_line_count) { + if (pos->lnum <= buf->b_ml.ml_line_count) { ptr = ml_get_buf(buf, pos->lnum, FALSE); pos->col -= utf_head_off(ptr, ptr + pos->col); } @@ -1444,14 +1443,12 @@ int searchc(cmdarg_T *cap, int t_cmd) if (t_cmd) { /* backup to before the character (possibly double-byte) */ col -= dir; - if (has_mbyte) { - if (dir < 0) - /* Landed on the search char which is lastc_bytelen long */ - col += lastc_bytelen - 1; - else - /* To previous char, which may be multi-byte. */ - col -= utf_head_off(p, p + col); - } + if (dir < 0) + /* Landed on the search char which is lastc_bytelen long */ + col += lastc_bytelen - 1; + else + /* To previous char, which may be multi-byte. */ + col -= utf_head_off(p, p + col); } curwin->w_cursor.col = col; @@ -1482,7 +1479,7 @@ pos_T *findmatch(oparg_T *oap, int initc) static int check_prevcol(char_u *linep, int col, int ch, int *prevcol) { --col; - if (col > 0 && has_mbyte) + if (col > 0) col -= utf_head_off(linep, linep + col); if (prevcol) *prevcol = col; @@ -1794,8 +1791,7 @@ pos_T *findmatchlimit(oparg_T *oap, int initc, int flags, int64_t maxtravel) pos.col = comment_col; } else { --pos.col; - if (has_mbyte) - pos.col -= utf_head_off(linep, linep + pos.col); + pos.col -= utf_head_off(linep, linep + pos.col); } } else { /* forward search */ if (linep[pos.col] == NUL diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c index 64d80d722a..7ee26da5fe 100644 --- a/src/nvim/syntax.c +++ b/src/nvim/syntax.c @@ -1729,9 +1729,7 @@ static int syn_current_attr( if (vim_iswordp_buf(line + current_col, syn_buf) && (current_col == 0 || !vim_iswordp_buf(line + current_col - 1 - - (has_mbyte - ? utf_head_off(line, line + current_col - 1) - : 0) + - utf_head_off(line, line + current_col - 1) , syn_buf))) { syn_id = check_keyword_id(line, (int)current_col, &endcol, &flags, &next_list, cur_si, diff --git a/src/nvim/window.c b/src/nvim/window.c index fa963d790d..07953212c5 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -5130,7 +5130,7 @@ file_name_in_line ( * Go one char back to ":" before "//" even when ':' is not in 'isfname'. */ while (ptr > line) { - if (has_mbyte && (len = (size_t)(utf_head_off(line, ptr - 1))) > 0) + if ((len = (size_t)(utf_head_off(line, ptr - 1))) > 0) ptr -= len + 1; else if (vim_isfilec(ptr[-1]) || ((options & FNAME_HYP) && path_is_url((char *)ptr - 1))) |