Avoid extra indentation on Go switches (#6817)

Unlike other languages, in Go, switches themselves are not indented;
it's just each case body which is indented by one level:

   switch foo {
   case "bar":
      baz()
   }

As such, we shouldn't `@indent` for type_switch_statement nor
expression_switch_statement, as otherwise inserted lines show up as:

   switch foo {
      // inserted with "o"
   case "bar":
         // inserted with "o"
      baz()
   }

With the fix, the inserted lines are indented properly:

   switch foo {
   // inserted with "o"
   case "bar":
      // inserted with "o"
      baz()
   }

I also verified that indentation on selects similarly works well.

Thanks to Triton171 for helping with this fix.
This commit is contained in:
Daniel Martí 2023-04-26 01:05:23 +02:00 committed by GitHub
parent 096ed0ced4
commit e7f25d88ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -14,8 +14,6 @@
(argument_list)
(field_declaration_list)
(block)
(type_switch_statement)
(expression_switch_statement)
(var_declaration)
] @indent
@ -24,5 +22,19 @@
")"
] @outdent
((_ "}" @outdent) @outer (#not-kind-eq? @outer "select_statement"))
(communication_case) @extend
; Switches and selects aren't indented, only their case bodies are.
; Outdent all closing braces except those closing switches or selects.
(
(_ "}" @outdent) @outer
(#not-kind-eq? @outer "select_statement")
(#not-kind-eq? @outer "type_switch_statement")
(#not-kind-eq? @outer "expression_switch_statement")
)
; Starting a line after a new case should indent.
[
(communication_case)
(expression_case)
(default_case)
(type_case)
] @extend