patch 9.2.0610: cindent: closing brace in a comment affects the next line's indent
Commit: https://github.com/vim/vim/commit/9dd86dff9b48928bfca1b37a60eaa98da77bfde3 Author: Hirohito Higashi <[email protected]> Date: Tue Jun 9 19:35:02 2026 +0000 patch 9.2.0610: cindent: closing brace in a comment affects the next line's indent Problem: A '}' inside a // line comment changes the indentation of the following line inside an enum or struct (rendcrx). Solution: Stop scanning the line once a line comment is reached, so a brace inside the comment is no longer mistaken for an unmatched brace. fixes: #20455 closes: #20458 Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Signed-off-by: Hirohito Higashi <[email protected]> Signed-off-by: Christian Brabandt <[email protected]> diff --git a/src/cindent.c b/src/cindent.c index 94c01db7e..fa8059509 100644 --- a/src/cindent.c +++ b/src/cindent.c @@ -1217,6 +1217,8 @@ find_last_paren(char_u *l, int start, int end) for (i = 0; l[i] != NUL; i++) { i = (int)(cin_skipcomment(l + i) - l); // ignore parens in comments + if (l[i] == NUL) + break; i = (int)(skip_string(l + i) - l); // ignore parens in quotes if (l[i] == start) ++open_count; diff --git a/src/testdir/test_cindent.vim b/src/testdir/test_cindent.vim index f050d82f8..90dff6049 100644 --- a/src/testdir/test_cindent.vim +++ b/src/testdir/test_cindent.vim @@ -5604,6 +5604,37 @@ def Test_cindent_comment_brackets() assert_equal(' arg3);', getline(3)) bwipe! + # stray } in a // line comment inside an aggregate (enum/struct) whose + # opening brace is at the end of the line must not affect the next member + new + setl cindent sw=4 + var code6 =<< trim [CODE] + typedef enum { + ND_BLOCK, // { ... } + ND_FUNCALL, + } NodeKind; + [CODE] + setline(1, code6) + cursor(3, 1) + normal == + assert_equal(' ND_FUNCALL,', getline(3)) + bwipe! + + # same, a struct member with a trailing // } comment + new + setl cindent sw=4 + var code7 =<< trim [CODE] + struct S { + int a; // } + int b; + }; + [CODE] + setline(1, code7) + cursor(3, 1) + normal == + assert_equal(' int b;', getline(3)) + bwipe! + enddef diff --git a/src/version.c b/src/version.c index 6f4499c39..3b135e4b0 100644 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 610, /**/ 609, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1wX2Nm-006ifd-3s%40256bit.org.
