mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-25 02:46:17 +04:00
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:
parent
096ed0ced4
commit
e7f25d88ca
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user