aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/indent_c.c14
-rw-r--r--src/nvim/version.c2
-rw-r--r--test/functional/legacy/003_cindent_spec.lua54
3 files changed, 66 insertions, 4 deletions
diff --git a/src/nvim/indent_c.c b/src/nvim/indent_c.c
index 7cd8dd62de..3def0defe3 100644
--- a/src/nvim/indent_c.c
+++ b/src/nvim/indent_c.c
@@ -1132,13 +1132,21 @@ static int cin_is_cpp_baseclass(cpp_baseclass_cache_T *cached) {
pos->lnum = lnum;
line = ml_get(lnum);
- s = cin_skipcomment(line);
+ s = line;
for (;; ) {
if (*s == NUL) {
- if (lnum == curwin->w_cursor.lnum)
+ if (lnum == curwin->w_cursor.lnum) {
break;
- /* Continue in the cursor line. */
+ }
+ // Continue in the cursor line.
line = ml_get(++lnum);
+ s = line;
+ }
+ if (s == line) {
+ // don't recognize "case (foo):" as a baseclass */
+ if (cin_iscase(s, false)) {
+ break;
+ }
s = cin_skipcomment(line);
if (*s == NUL)
continue;
diff --git a/src/nvim/version.c b/src/nvim/version.c
index c5781412e7..5a46049e27 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -395,7 +395,7 @@ static int included_patches[] = {
// 896,
// 895,
// 894 NA
- // 893,
+ 893,
// 892,
891,
// 890 NA
diff --git a/test/functional/legacy/003_cindent_spec.lua b/test/functional/legacy/003_cindent_spec.lua
index fbbc05f486..9831c7a7d8 100644
--- a/test/functional/legacy/003_cindent_spec.lua
+++ b/test/functional/legacy/003_cindent_spec.lua
@@ -941,6 +941,33 @@ describe('cindent', function()
a = 1;
}
+ void func()
+ {
+ switch (foo)
+ {
+ case (bar):
+ if (baz())
+ quux();
+ break;
+ case (shmoo):
+ if (!bar)
+ {
+ }
+ case (foo1):
+ switch (bar)
+ {
+ case baz:
+ baz_f();
+ break;
+ }
+ break;
+ default:
+ baz();
+ baz();
+ break;
+ }
+ }
+
/* end of AUTO */
]=])
@@ -1869,6 +1896,33 @@ describe('cindent', function()
a = 1;
}
+ void func()
+ {
+ switch (foo)
+ {
+ case (bar):
+ if (baz())
+ quux();
+ break;
+ case (shmoo):
+ if (!bar)
+ {
+ }
+ case (foo1):
+ switch (bar)
+ {
+ case baz:
+ baz_f();
+ break;
+ }
+ break;
+ default:
+ baz();
+ baz();
+ break;
+ }
+ }
+
/* end of AUTO */
]=])
end)