From fe57a8a4e410e19f05a4137709632ee375b1c2aa Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 23 Aug 2018 03:38:06 -0400 Subject: vim-patch:8.0.0999: indenting raw C++ strings is wrong Problem: Indenting raw C++ strings is wrong. Solution: Add special handling of raw strings. (Christian Brabandt) https://github.com/vim/vim/commit/dde81312b031211752d1fcb8539d79f90f324a2e --- src/nvim/indent_c.c | 28 ++++++++++++++++++---------- src/nvim/testdir/test_cindent.vim | 13 +++++++++++-- 2 files changed, 29 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/nvim/indent_c.c b/src/nvim/indent_c.c index 2a215f854f..c1aeb4cab8 100644 --- a/src/nvim/indent_c.c +++ b/src/nvim/indent_c.c @@ -75,11 +75,12 @@ find_start_comment ( /* XXX */ /// Find the start of a comment or raw string, not knowing if we are in a /// comment or raw string right now. /// Search starts at w_cursor.lnum and goes backwards. +/// If is_raw is given and returns start of raw_string, sets it to true. /// /// @returns NULL when not inside a comment or raw string. /// /// @note "CORS" -> Comment Or Raw String -static pos_T *ind_find_start_CORS(void) +static pos_T *ind_find_start_CORS(linenr_T *is_raw) { // XXX static pos_T comment_pos_copy; @@ -96,6 +97,9 @@ static pos_T *ind_find_start_CORS(void) // If comment_pos is before rs_pos the raw string is inside the comment. // If rs_pos is before comment_pos the comment is inside the raw string. if (comment_pos == NULL || (rs_pos != NULL && lt(*rs_pos, *comment_pos))) { + if (is_raw != NULL && rs_pos != NULL) { + *is_raw = rs_pos->lnum; + } return rs_pos; } return comment_pos; @@ -384,8 +388,9 @@ int cin_islabel(void) * it. */ curwin->w_cursor.col = 0; - if ((trypos = ind_find_start_CORS()) != NULL) /* XXX */ + if ((trypos = ind_find_start_CORS(NULL)) != NULL) { // XXX curwin->w_cursor = *trypos; + } line = get_cursor_line_ptr(); if (cin_ispreproc(line)) /* ignore #defines, #if, etc. */ @@ -1401,8 +1406,9 @@ static pos_T *find_start_brace(void) pos = NULL; /* ignore the { if it's in a // or / * * / comment */ if ((colnr_T)cin_skip2pos(trypos) == trypos->col - && (pos = ind_find_start_CORS()) == NULL) /* XXX */ + && (pos = ind_find_start_CORS(NULL)) == NULL) { // XXX break; + } if (pos != NULL) curwin->w_cursor.lnum = pos->lnum; } @@ -1443,7 +1449,7 @@ retry: pos_copy = *trypos; /* copy trypos, findmatch will change it */ trypos = &pos_copy; curwin->w_cursor = *trypos; - if ((trypos_wk = ind_find_start_CORS()) != NULL) { /* XXX */ + if ((trypos_wk = ind_find_start_CORS(NULL)) != NULL) { // XXX ind_maxp_wk = ind_maxparen - (int)(cursor_save.lnum - trypos_wk->lnum); if (ind_maxp_wk > 0) { @@ -1793,6 +1799,7 @@ int get_c_indent(void) int cont_amount = 0; /* amount for continuation line */ int original_line_islabel; int added_to_amount = 0; + linenr_T raw_string_start = 0; cpp_baseclass_cache_T cache_cpp_baseclass = { false, { MAXLNUM, 0 } }; /* make a copy, value is changed below */ @@ -2060,7 +2067,7 @@ int get_c_indent(void) curwin->w_cursor.lnum = lnum; /* Skip a comment or raw string. XXX */ - if ((trypos = ind_find_start_CORS()) != NULL) { + if ((trypos = ind_find_start_CORS(NULL)) != NULL) { lnum = trypos->lnum + 1; continue; } @@ -2443,7 +2450,7 @@ int get_c_indent(void) * If we're in a comment or raw string now, skip to * the start of it. */ - trypos = ind_find_start_CORS(); + trypos = ind_find_start_CORS(NULL); if (trypos != NULL) { curwin->w_cursor.lnum = trypos->lnum + 1; curwin->w_cursor.col = 0; @@ -2552,7 +2559,7 @@ int get_c_indent(void) /* If we're in a comment or raw string now, skip * to the start of it. */ - trypos = ind_find_start_CORS(); + trypos = ind_find_start_CORS(NULL); if (trypos != NULL) { curwin->w_cursor.lnum = trypos->lnum + 1; curwin->w_cursor.col = 0; @@ -2585,7 +2592,7 @@ int get_c_indent(void) * If we're in a comment or raw string now, skip to the start * of it. */ /* XXX */ - if ((trypos = ind_find_start_CORS()) != NULL) { + if ((trypos = ind_find_start_CORS(&raw_string_start)) != NULL) { curwin->w_cursor.lnum = trypos->lnum + 1; curwin->w_cursor.col = 0; continue; @@ -3096,7 +3103,8 @@ int get_c_indent(void) } if (lookfor != LOOKFOR_TERM && lookfor != LOOKFOR_JS_KEY - && lookfor != LOOKFOR_COMMA) { + && lookfor != LOOKFOR_COMMA + && raw_string_start != curwin->w_cursor.lnum) { lookfor = LOOKFOR_UNTERM; } } @@ -3355,7 +3363,7 @@ term_again: * If we're in a comment or raw string now, skip to the start * of it. */ /* XXX */ - if ((trypos = ind_find_start_CORS()) != NULL) { + if ((trypos = ind_find_start_CORS(NULL)) != NULL) { curwin->w_cursor.lnum = trypos->lnum + 1; curwin->w_cursor.col = 0; continue; diff --git a/src/nvim/testdir/test_cindent.vim b/src/nvim/testdir/test_cindent.vim index 444c4c4109..d352e8feff 100644 --- a/src/nvim/testdir/test_cindent.vim +++ b/src/nvim/testdir/test_cindent.vim @@ -68,9 +68,18 @@ func Test_cino_extern_c() call assert_equal(pair[2], getline(len(lines) + 1), 'Failed for "' . string(lines) . '"') endfor - - bwipe! endfunc +func! Test_cindent_rawstring() + new + setl cindent + call feedkeys("i" . + \ "int main() {\" . + \ "R\"(\" . + \ ")\";\" . + \ "statement;\", "x") + call assert_equal("\tstatement;", getline(line('.'))) + bw! +endfunction " vim: shiftwidth=2 sts=2 expandtab -- cgit From d677ae5f6461dcd78f08caec2c4fa72e6e275137 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 23 Aug 2018 04:43:44 -0400 Subject: vim-patch:8.0.1041: bogus characters when indenting during visual-block append Problem: Bogus characters appear when indenting kicks in while doing a visual-block append. Solution: Recompute when indenting is done. (Christian Brabandt) https://github.com/vim/vim/commit/e2e69e48134cbfdedea7802810932f8592705024 --- src/nvim/charset.c | 14 +++++++++++++- src/nvim/edit.c | 7 +++---- src/nvim/misc1.c | 6 ++---- src/nvim/ops.c | 19 +++++++++++++++---- src/nvim/screen.c | 2 +- src/nvim/spell.c | 6 +++--- src/nvim/testdir/test_cindent.vim | 24 ++++++++++++++++++++++-- 7 files changed, 59 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/nvim/charset.c b/src/nvim/charset.c index f1b3be6b46..4e8bb3b0d7 100644 --- a/src/nvim/charset.c +++ b/src/nvim/charset.c @@ -30,7 +30,7 @@ #include "nvim/state.h" #include "nvim/strings.h" #include "nvim/path.h" - +#include "nvim/cursor.h" #ifdef INCLUDE_GENERATED_DECLARATIONS # include "charset.c.generated.h" @@ -1465,6 +1465,18 @@ char_u *skipwhite(const char_u *q) return (char_u *)p; } +// getwhitecols: return the number of whitespace +// columns (bytes) at the start of a given line +intptr_t getwhitecols_curline(void) +{ + return getwhitecols(get_cursor_line_ptr()); +} + +intptr_t getwhitecols(const char_u *p) +{ + return skipwhite(p) - p; +} + /// Skip over digits /// /// @param[in] q String to skip digits in. diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 085f12473e..be2797ee3e 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -4506,7 +4506,7 @@ static int ins_complete(int c, bool enable_pum) * first non_blank in the line, if it is not a wordchar * include it to get a better pattern, but then we don't * want the "\\<" prefix, check it bellow */ - compl_col = (colnr_T)(skipwhite(line) - line); + compl_col = (colnr_T)getwhitecols(line); compl_startpos.col = compl_col; compl_startpos.lnum = curwin->w_cursor.lnum; compl_cont_status &= ~CONT_SOL; /* clear SOL if present */ @@ -4625,7 +4625,7 @@ static int ins_complete(int c, bool enable_pum) } } } else if (CTRL_X_MODE_LINE_OR_EVAL(ctrl_x_mode)) { - compl_col = (colnr_T)(skipwhite(line) - line); + compl_col = (colnr_T)getwhitecols(line); compl_length = (int)curs_col - (int)compl_col; if (compl_length < 0) /* cursor in indent: empty pattern */ compl_length = 0; @@ -6963,8 +6963,7 @@ bool in_cinkeys(int keytyped, int when, bool line_is_empty) if (match && try_match_word && !try_match) { /* "0=word": Check if there are only blanks before the * word. */ - line = get_cursor_line_ptr(); - if ((int)(skipwhite(line) - line) != + if (getwhitecols(line) != (int)(curwin->w_cursor.col - (p - look))) match = FALSE; } diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index 84d8c995a6..e87c754eb8 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -884,8 +884,7 @@ open_line ( && curbuf->b_p_lisp && curbuf->b_p_ai) { fixthisline(get_lisp_indent); - p = get_cursor_line_ptr(); - ai_col = (colnr_T)(skipwhite(p) - p); + ai_col = (colnr_T)getwhitecols_curline(); } /* * May do indenting after opening a new line. @@ -898,8 +897,7 @@ open_line ( ? KEY_OPEN_FORW : KEY_OPEN_BACK, ' ', linewhite(curwin->w_cursor.lnum))) { do_c_expr_indent(); - p = get_cursor_line_ptr(); - ai_col = (colnr_T)(skipwhite(p) - p); + ai_col = (colnr_T)getwhitecols_curline(); } if (vreplace_mode != 0) State = vreplace_mode; diff --git a/src/nvim/ops.c b/src/nvim/ops.c index ff02d82ff3..f3661b2045 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -2014,6 +2014,7 @@ void op_insert(oparg_T *oap, long count1) { long ins_len, pre_textlen = 0; char_u *firstline, *ins_text; + colnr_T ind_pre, ind_post; struct block_def bd; int i; pos_T t1; @@ -2044,7 +2045,10 @@ void op_insert(oparg_T *oap, long count1) } // Get the info about the block before entering the text block_prep(oap, &bd, oap->start.lnum, true); + // Get indent information + ind_pre = (colnr_T)getwhitecols_curline(); firstline = ml_get(oap->start.lnum) + bd.textcol; + if (oap->op_type == OP_APPEND) firstline += bd.textlen; pre_textlen = (long)STRLEN(firstline); @@ -2091,6 +2095,14 @@ void op_insert(oparg_T *oap, long count1) oap->start = curbuf->b_op_start_orig; } + // if indent kicked in, the firstline might have changed + // but only do that, if the indent actually increased + ind_post = (colnr_T)getwhitecols_curline(); + if (curbuf->b_op_start.col > ind_pre && ind_post > ind_pre) { + bd.textcol += ind_post - ind_pre; + bd.start_vcol += ind_post - ind_pre; + } + /* If user has moved off this line, we don't know what to do, so do * nothing. * Also don't repeat the insert when Insert mode ended with CTRL-C. */ @@ -2216,7 +2228,7 @@ int op_change(oparg_T *oap) } firstline = ml_get(oap->start.lnum); pre_textlen = (long)STRLEN(firstline); - pre_indent = (long)(skipwhite(firstline) - firstline); + pre_indent = (long)getwhitecols(firstline); bd.textcol = curwin->w_cursor.col; } @@ -2237,7 +2249,7 @@ int op_change(oparg_T *oap) // the indent, exclude that indent change from the inserted text. firstline = ml_get(oap->start.lnum); if (bd.textcol > (colnr_T)pre_indent) { - long new_indent = (long)(skipwhite(firstline) - firstline); + long new_indent = (long)getwhitecols(firstline); pre_textlen += new_indent - pre_indent; bd.textcol += (colnr_T)(new_indent - pre_indent); @@ -4122,8 +4134,7 @@ format_lines ( mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L, (long)-next_leader_len); } else if (second_indent > 0) { /* the "leader" for FO_Q_SECOND */ - char_u *p = get_cursor_line_ptr(); - int indent = (int)(skipwhite(p) - p); + int indent = (int)getwhitecols_curline(); if (indent > 0) { (void)del_bytes(indent, FALSE, FALSE); diff --git a/src/nvim/screen.c b/src/nvim/screen.c index ec48bf5dcf..e1bc8556f9 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2462,7 +2462,7 @@ win_line ( if (has_spell) { /* For checking first word with a capital skip white space. */ if (cap_col == 0) - cap_col = (int)(skipwhite(line) - line); + cap_col = (int)getwhitecols(line); /* To be able to spell-check over line boundaries copy the end of the * current line into nextline[]. Above the start of the next line was diff --git a/src/nvim/spell.c b/src/nvim/spell.c index 1cb679245b..c05a1d107a 100644 --- a/src/nvim/spell.c +++ b/src/nvim/spell.c @@ -1399,10 +1399,10 @@ spell_move_to ( // For checking first word with a capital skip white space. if (capcol == 0) - capcol = (int)(skipwhite(line) - line); + capcol = (int)getwhitecols(line); else if (curline && wp == curwin) { // For spellbadword(): check if first word needs a capital. - col = (int)(skipwhite(line) - line); + col = (int)getwhitecols(line); if (check_need_cap(lnum, col)) capcol = col; @@ -2976,7 +2976,7 @@ static bool check_need_cap(linenr_T lnum, colnr_T col) line = get_cursor_line_ptr(); endcol = 0; - if ((int)(skipwhite(line) - line) >= (int)col) { + if (getwhitecols(line) >= (int)col) { // At start of line, check if previous line is empty or sentence // ends there. if (lnum == 1) diff --git a/src/nvim/testdir/test_cindent.vim b/src/nvim/testdir/test_cindent.vim index d352e8feff..7c2c5e341c 100644 --- a/src/nvim/testdir/test_cindent.vim +++ b/src/nvim/testdir/test_cindent.vim @@ -71,7 +71,7 @@ func Test_cino_extern_c() bwipe! endfunc -func! Test_cindent_rawstring() +func Test_cindent_rawstring() new setl cindent call feedkeys("i" . @@ -81,5 +81,25 @@ func! Test_cindent_rawstring() \ "statement;\", "x") call assert_equal("\tstatement;", getline(line('.'))) bw! -endfunction +endfunc + +func Test_cindent_expr() + new + func! MyIndentFunction() + return v:lnum == 1 ? shiftwidth() : 0 + endfunc + setl expandtab sw=8 indentkeys+=; indentexpr=MyIndentFunction() + call setline(1, ['var_a = something()', 'b = something()']) + call cursor(1, 1) + call feedkeys("^\j$A;\", 'tnix') + call assert_equal([' var_a = something();', 'b = something();'], getline(1, '$')) + + %d + call setline(1, [' var_a = something()', ' b = something()']) + call cursor(1, 1) + call feedkeys("^\j$A;\", 'tnix') + call assert_equal([' var_a = something();', ' b = something()'], getline(1, '$')) + bw! +endfunc + " vim: shiftwidth=2 sts=2 expandtab -- cgit From fb68c97ce8950fdf598a0b7ff9be7cc3fa624f2e Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 23 Aug 2018 09:57:07 -0400 Subject: vim-patch:8.0.1043: warning for uninitialized variable Problem: Warning for uninitialized variable. (John Marriott) Solution: Move code to check indent inside "if". https://github.com/vim/vim/commit/4ec86ddd77a89766e42bd0a6cfcf10af4c3d03b2 --- src/nvim/ops.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/nvim/ops.c b/src/nvim/ops.c index f3661b2045..4d8403bee8 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -2014,7 +2014,7 @@ void op_insert(oparg_T *oap, long count1) { long ins_len, pre_textlen = 0; char_u *firstline, *ins_text; - colnr_T ind_pre, ind_post; + colnr_T ind_pre; struct block_def bd; int i; pos_T t1; @@ -2095,14 +2095,6 @@ void op_insert(oparg_T *oap, long count1) oap->start = curbuf->b_op_start_orig; } - // if indent kicked in, the firstline might have changed - // but only do that, if the indent actually increased - ind_post = (colnr_T)getwhitecols_curline(); - if (curbuf->b_op_start.col > ind_pre && ind_post > ind_pre) { - bd.textcol += ind_post - ind_pre; - bd.start_vcol += ind_post - ind_pre; - } - /* If user has moved off this line, we don't know what to do, so do * nothing. * Also don't repeat the insert when Insert mode ended with CTRL-C. */ @@ -2112,6 +2104,14 @@ void op_insert(oparg_T *oap, long count1) if (oap->motion_type == kMTBlockWise) { struct block_def bd2; + // if indent kicked in, the firstline might have changed + // but only do that, if the indent actually increased + const colnr_T ind_post = (colnr_T)getwhitecols_curline(); + if (curbuf->b_op_start.col > ind_pre && ind_post > ind_pre) { + bd.textcol += ind_post - ind_pre; + bd.start_vcol += ind_post - ind_pre; + } + /* The user may have moved the cursor before inserting something, try * to adjust the block for that. */ if (oap->start.lnum == curbuf->b_op_start_orig.lnum && !bd.is_MAX) { -- cgit From 27fbffeb4f56a76a24a8d8b348caf6f733f2fc4d Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 23 Aug 2018 09:59:41 -0400 Subject: vim-patch:8.0.1044: warning for uninitialized variable Problem: Warning for uninitialized variable. (John Marriott) Solution: Initialize ind_pre. https://github.com/vim/vim/commit/2254a8ad0cb596a0a0863b1af92353f018c0b355 --- src/nvim/ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 4d8403bee8..d6f60f33da 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -2014,7 +2014,7 @@ void op_insert(oparg_T *oap, long count1) { long ins_len, pre_textlen = 0; char_u *firstline, *ins_text; - colnr_T ind_pre; + colnr_T ind_pre = 0; struct block_def bd; int i; pos_T t1; -- cgit From 6c8851be4e5ce8cbd6f224451fae8a0adc292bf6 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Thu, 23 Aug 2018 04:13:29 -0400 Subject: lint --- src/nvim/edit.c | 38 ++++++++++++++++++++------------------ src/nvim/indent_c.c | 19 +++++++++---------- src/nvim/ops.c | 7 ++++--- src/nvim/screen.c | 5 +++-- src/nvim/spell.c | 7 ++++--- 5 files changed, 40 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/nvim/edit.c b/src/nvim/edit.c index be2797ee3e..08b74249ba 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -6919,7 +6919,7 @@ bool in_cinkeys(int keytyped, int when, bool line_is_empty) p = look + STRLEN(look); if ((try_match || try_match_word) && curwin->w_cursor.col >= (colnr_T)(p - look)) { - int match = FALSE; + bool match = false; if (keytyped == KEY_COMPLETE) { char_u *s; @@ -6944,28 +6944,30 @@ bool in_cinkeys(int keytyped, int when, bool line_is_empty) && (icase ? mb_strnicmp(s, look, (size_t)(p - look)) : STRNCMP(s, look, p - look)) == 0) - match = TRUE; - } else - /* TODO: multi-byte */ - if (keytyped == (int)p[-1] || (icase && keytyped < 256 - && TOLOWER_LOC(keytyped) == - TOLOWER_LOC((int)p[-1]))) { - line = get_cursor_pos_ptr(); - assert(p >= look && (uintmax_t)(p - look) <= SIZE_MAX); - if ((curwin->w_cursor.col == (colnr_T)(p - look) - || !vim_iswordc(line[-(p - look) - 1])) - && (icase - ? mb_strnicmp(line - (p - look), look, (size_t)(p - look)) - : STRNCMP(line - (p - look), look, p - look)) - == 0) - match = TRUE; + match = true; + } else { + // TODO(@brammool): multi-byte + if (keytyped == (int)p[-1] + || (icase && keytyped < 256 + && TOLOWER_LOC(keytyped) == TOLOWER_LOC((int)p[-1]))) { + line = get_cursor_pos_ptr(); + assert(p >= look && (uintmax_t)(p - look) <= SIZE_MAX); + if ((curwin->w_cursor.col == (colnr_T)(p - look) + || !vim_iswordc(line[-(p - look) - 1])) + && (icase + ? mb_strnicmp(line - (p - look), look, (size_t)(p - look)) + : STRNCMP(line - (p - look), look, p - look)) == 0) { + match = true; + } + } } if (match && try_match_word && !try_match) { /* "0=word": Check if there are only blanks before the * word. */ if (getwhitecols(line) != - (int)(curwin->w_cursor.col - (p - look))) - match = FALSE; + (int)(curwin->w_cursor.col - (p - look))) { + match = false; + } } if (match) { return true; diff --git a/src/nvim/indent_c.c b/src/nvim/indent_c.c index c1aeb4cab8..f8ce6200d7 100644 --- a/src/nvim/indent_c.c +++ b/src/nvim/indent_c.c @@ -1409,8 +1409,9 @@ static pos_T *find_start_brace(void) && (pos = ind_find_start_CORS(NULL)) == NULL) { // XXX break; } - if (pos != NULL) + if (pos != NULL) { curwin->w_cursor.lnum = pos->lnum; + } } curwin->w_cursor = cursor_save; return trypos; @@ -2066,7 +2067,7 @@ int get_c_indent(void) } curwin->w_cursor.lnum = lnum; - /* Skip a comment or raw string. XXX */ + // Skip a comment or raw string. XXX if ((trypos = ind_find_start_CORS(NULL)) != NULL) { lnum = trypos->lnum + 1; continue; @@ -2588,10 +2589,9 @@ int get_c_indent(void) break; } - /* - * If we're in a comment or raw string now, skip to the start - * of it. - */ /* XXX */ + // If we're in a comment or raw string now, skip to the start + // of it. + // XXX if ((trypos = ind_find_start_CORS(&raw_string_start)) != NULL) { curwin->w_cursor.lnum = trypos->lnum + 1; curwin->w_cursor.col = 0; @@ -3359,10 +3359,9 @@ term_again: l = get_cursor_line_ptr(); - /* - * If we're in a comment or raw string now, skip to the start - * of it. - */ /* XXX */ + // If we're in a comment or raw string now, skip to the start + // of it. + // XXX if ((trypos = ind_find_start_CORS(NULL)) != NULL) { curwin->w_cursor.lnum = trypos->lnum + 1; curwin->w_cursor.col = 0; diff --git a/src/nvim/ops.c b/src/nvim/ops.c index d6f60f33da..9e837c1e12 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -2049,8 +2049,9 @@ void op_insert(oparg_T *oap, long count1) ind_pre = (colnr_T)getwhitecols_curline(); firstline = ml_get(oap->start.lnum) + bd.textcol; - if (oap->op_type == OP_APPEND) + if (oap->op_type == OP_APPEND) { firstline += bd.textlen; + } pre_textlen = (long)STRLEN(firstline); } @@ -4132,8 +4133,8 @@ format_lines ( if (next_leader_len > 0) { (void)del_bytes(next_leader_len, false, false); mark_col_adjust(curwin->w_cursor.lnum, (colnr_T)0, 0L, - (long)-next_leader_len); - } else if (second_indent > 0) { /* the "leader" for FO_Q_SECOND */ + (long)-next_leader_len); + } else if (second_indent > 0) { // the "leader" for FO_Q_SECOND int indent = (int)getwhitecols_curline(); if (indent > 0) { diff --git a/src/nvim/screen.c b/src/nvim/screen.c index e1bc8556f9..092820321c 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2460,9 +2460,10 @@ win_line ( ptr = line; if (has_spell) { - /* For checking first word with a capital skip white space. */ - if (cap_col == 0) + // For checking first word with a capital skip white space. + if (cap_col == 0) { cap_col = (int)getwhitecols(line); + } /* To be able to spell-check over line boundaries copy the end of the * current line into nextline[]. Above the start of the next line was diff --git a/src/nvim/spell.c b/src/nvim/spell.c index c05a1d107a..4acbdcc298 100644 --- a/src/nvim/spell.c +++ b/src/nvim/spell.c @@ -1398,13 +1398,14 @@ spell_move_to ( capcol = 0; // For checking first word with a capital skip white space. - if (capcol == 0) + if (capcol == 0) { capcol = (int)getwhitecols(line); - else if (curline && wp == curwin) { + } else if (curline && wp == curwin) { // For spellbadword(): check if first word needs a capital. col = (int)getwhitecols(line); - if (check_need_cap(lnum, col)) + if (check_need_cap(lnum, col)) { capcol = col; + } // Need to get the line again, may have looked at the previous // one. -- cgit