aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2022-04-11 22:50:17 +0200
committerGitHub <noreply@github.com>2022-04-11 22:50:17 +0200
commit85b33fc0426049b5cf3e65bb76aa600272785109 (patch)
tree0d0b6e0bc8e127182dd9fe3d668b31f213c4d3b6
parent392cb7ac0cf7fd2ede1d3c22c4bbb47f92a55637 (diff)
downloadrneovim-85b33fc0426049b5cf3e65bb76aa600272785109.tar.gz
rneovim-85b33fc0426049b5cf3e65bb76aa600272785109.tar.bz2
rneovim-85b33fc0426049b5cf3e65bb76aa600272785109.zip
vim-patch:8.2.4737: // in JavaScript string recognized as comment (#18083)
Problem: // in JavaScript string recognized as comment. Solution: Only check for linecomment if 'cindent' is set. (closes vim/vim#10151) https://github.com/vim/vim/commit/1655619717ff109ea8bf1002883636d5af345e48
-rw-r--r--src/nvim/change.c2
-rw-r--r--src/nvim/testdir/test_textformat.vim15
2 files changed, 15 insertions, 2 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c
index 44abd69733..024969415d 100644
--- a/src/nvim/change.c
+++ b/src/nvim/change.c
@@ -1186,7 +1186,7 @@ int open_line(int dir, int flags, int second_line_indent, bool *did_do_comment)
end_comment_pending = NUL;
if (flags & OPENLINE_DO_COM) {
lead_len = get_leader_len(saved_line, &lead_flags, dir == BACKWARD, true);
- if (lead_len == 0 && do_cindent && dir == FORWARD) {
+ if (lead_len == 0 && curbuf->b_p_cin && do_cindent && dir == FORWARD) {
// Check for a line comment after code.
comment_start = check_linecomment(saved_line);
if (comment_start != MAXCOL) {
diff --git a/src/nvim/testdir/test_textformat.vim b/src/nvim/testdir/test_textformat.vim
index e9f846af7b..b6be3d8861 100644
--- a/src/nvim/testdir/test_textformat.vim
+++ b/src/nvim/testdir/test_textformat.vim
@@ -278,12 +278,25 @@ func Test_format_c_comment()
//
END
call assert_equal(expected, getline(1, '$'))
+
+ " using 'indentexpr' instead of 'cindent' does not repeat a comment
+ setl nocindent indentexpr=2
+ 3delete
+ normal 2Gox
+ let expected =<< trim END
+ nop;
+ val = val; // This is a comment
+ x
+ END
+ call assert_equal(expected, getline(1, '$'))
+ setl cindent indentexpr=
+ 3delete
+
normal 2GO
let expected =<< trim END
nop;
val = val; // This is a comment
- //
END
call assert_equal(expected, getline(1, '$'))