patch 7.4.893
Problem:    C indenting is wrong below a "case (foo):" because it is
            recognized as a C++ base class construct.  Issue #38.
Solution:   Check for the case keyword.
diff --git a/src/misc1.c b/src/misc1.c
index 60e8146..aacf610 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -6555,7 +6555,7 @@
 
     pos->lnum = lnum;
     line = ml_get(lnum);
-    s = cin_skipcomment(line);
+    s = line;
     for (;;)
     {
 	if (*s == NUL)
@@ -6564,6 +6564,13 @@
 		break;
 	    /* 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/testdir/test3.in b/src/testdir/test3.in
index 4fc73a9..f3d4f18 100644
--- a/src/testdir/test3.in
+++ b/src/testdir/test3.in
Binary files differ
diff --git a/src/testdir/test3.ok b/src/testdir/test3.ok
index 8fa9caa..477aacc 100644
--- a/src/testdir/test3.ok
+++ b/src/testdir/test3.ok
@@ -920,6 +920,33 @@
 		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 */
 
 
diff --git a/src/version.c b/src/version.c
index 3722b5a..3c8a938 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    893,
+/**/
     892,
 /**/
     891,