diff --git a/src/testdir/test_textformat.vim b/src/testdir/test_textformat.vim index 79e282eff0..9630e8d150 100644 --- a/src/testdir/test_textformat.vim +++ b/src/testdir/test_textformat.vim @@ -342,6 +342,18 @@ func Test_format_c_comment() END call assert_equal(expected, getline(1, '$')) + " typing comment text auto-wraps + %del + call setline(1, text) + exe "normal! 2GA blah more text blah.\" + let expected =<< trim END + { + val = val; // This is a comment + // blah more text + // blah. + END + call assert_equal(expected, getline(1, '$')) + bwipe! endfunc diff --git a/src/textformat.c b/src/textformat.c index fd0d31d639..826726bf32 100644 --- a/src/textformat.c +++ b/src/textformat.c @@ -104,7 +104,27 @@ internal_format( // Don't break until after the comment leader if (do_comments) - leader_len = get_leader_len(ml_get_curline(), NULL, FALSE, TRUE); + { + char_u *line = ml_get_curline(); + + leader_len = get_leader_len(line, NULL, FALSE, TRUE); +#ifdef FEAT_CINDENT + if (leader_len == 0 && curbuf->b_p_cin) + { + int comment_start; + + // Check for a line comment after code. + comment_start = check_linecomment(line); + if (comment_start != MAXCOL) + { + leader_len = get_leader_len( + line + comment_start, NULL, FALSE, TRUE); + if (leader_len != 0) + leader_len += comment_start; + } + } +#endif + } else leader_len = 0; diff --git a/src/version.c b/src/version.c index f53be12400..1eb14d0e7e 100644 --- a/src/version.c +++ b/src/version.c @@ -746,6 +746,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 4908, /**/ 4907, /**/