2022-03-30 17:08:07 +02:00
|
|
|
[
|
|
|
|
(use_list)
|
|
|
|
(block)
|
|
|
|
(match_block)
|
|
|
|
(arguments)
|
|
|
|
(parameters)
|
|
|
|
(declaration_list)
|
|
|
|
(field_declaration_list)
|
|
|
|
(field_initializer_list)
|
|
|
|
(struct_pattern)
|
|
|
|
(tuple_pattern)
|
|
|
|
(unit_expression)
|
|
|
|
(enum_variant_list)
|
|
|
|
(call_expression)
|
|
|
|
(binary_expression)
|
|
|
|
(field_expression)
|
|
|
|
(tuple_expression)
|
|
|
|
(array_expression)
|
|
|
|
(where_clause)
|
|
|
|
|
|
|
|
(token_tree)
|
|
|
|
(macro_definition)
|
|
|
|
(token_tree_pattern)
|
|
|
|
(token_repetition)
|
|
|
|
] @indent
|
|
|
|
|
|
|
|
[
|
|
|
|
"}"
|
|
|
|
"]"
|
|
|
|
")"
|
|
|
|
] @outdent
|
|
|
|
|
|
|
|
; Indent the right side of assignments.
|
|
|
|
; The #not-same-line? predicate is required to prevent an extra indent for e.g.
|
|
|
|
; an else-clause where the previous if-clause starts on the same line as the assignment.
|
|
|
|
(assignment_expression
|
|
|
|
.
|
|
|
|
(_) @expr-start
|
|
|
|
right: (_) @indent
|
|
|
|
(#not-same-line? @indent @expr-start)
|
|
|
|
(#set! "scope" "all")
|
|
|
|
)
|
|
|
|
(compound_assignment_expr
|
|
|
|
.
|
|
|
|
(_) @expr-start
|
|
|
|
right: (_) @indent
|
|
|
|
(#not-same-line? @indent @expr-start)
|
|
|
|
(#set! "scope" "all")
|
|
|
|
)
|
|
|
|
(let_declaration
|
|
|
|
.
|
|
|
|
(_) @expr-start
|
|
|
|
value: (_) @indent
|
2022-11-11 23:51:58 +01:00
|
|
|
alternative: (_)? @indent
|
2022-03-30 17:08:07 +02:00
|
|
|
(#not-same-line? @indent @expr-start)
|
|
|
|
(#set! "scope" "all")
|
|
|
|
)
|
2022-11-11 23:51:58 +01:00
|
|
|
(if_expression
|
2022-03-30 17:08:07 +02:00
|
|
|
.
|
|
|
|
(_) @expr-start
|
2022-11-11 23:51:58 +01:00
|
|
|
condition: (_) @indent
|
2022-03-30 17:08:07 +02:00
|
|
|
(#not-same-line? @indent @expr-start)
|
|
|
|
(#set! "scope" "all")
|
|
|
|
)
|
|
|
|
(static_item
|
|
|
|
.
|
|
|
|
(_) @expr-start
|
|
|
|
value: (_) @indent
|
|
|
|
(#not-same-line? @indent @expr-start)
|
|
|
|
(#set! "scope" "all")
|
|
|
|
)
|
|
|
|
|
|
|
|
; Some field expressions where the left part is a multiline expression are not
|
|
|
|
; indented by cargo fmt.
|
|
|
|
; Because this multiline expression might be nested in an arbitrary number of
|
|
|
|
; field expressions, this can only be matched using a Regex.
|
|
|
|
(field_expression
|
|
|
|
value: (_) @val
|
|
|
|
"." @outdent
|
|
|
|
(#match? @val "(\\A[^\\n\\r]+\\([\\t ]*(\\n|\\r).*)|(\\A[^\\n\\r]*\\{[\\t ]*(\\n|\\r))")
|
|
|
|
)
|