diff options
Diffstat (limited to 'queries')
| -rw-r--r-- | queries/c/indents.scm | 86 |
1 files changed, 75 insertions, 11 deletions
diff --git a/queries/c/indents.scm b/queries/c/indents.scm index 661ae8228..185ace10c 100644 --- a/queries/c/indents.scm +++ b/queries/c/indents.scm @@ -1,28 +1,92 @@ [ - (compound_statement) - (preproc_arg) + (compound_statement) (field_declaration_list) (case_statement) (enumerator_list) - (struct_specifier) (compound_literal_expression) (initializer_list) - (while_statement) - (for_statement) - (switch_statement) + (init_declarator) (expression_statement) ] @indent -(if_statement condition: (_) @indent) -((if_statement + +( + if_statement + condition: (_) @indent +) +( + (if_statement + consequence: (_ ";" @indent_end) @_consequence + ) @indent + (#not-has-type? @_consequence compound_statement) +) + +;; if-else case, +;; with else that is not if/compound statement +( + (if_statement + consequence: (_ ";" @indent_end) @_consequence + "else" @branch + alternative: (_) @_alternative + )@indent + (#not-has-type? @_consequence compound_statement) + (#not-has-type? @_alternative compound_statement) +) + +;; if-elseif-else case +( + if_statement consequence: (_) @_consequence + alternative: + (if_statement "else" @branch) (#not-has-type? @_consequence compound_statement) - ) @indent) -(init_declarator) @indent +) + +;; if- else case +;; The alternative should be one of the cases below +;; because the alternative is a nested tree inside the original if +;; dedent to offset the indent it should have gotten +;; Does not support multi chained bare ifs +( + (if_statement + consequence: (_ ";" @indent_end) @_consequence + "else" @branch + alternative: + [ + (compound_statement) @dedent + (if_statement + consequence: (_) @_consequence (#not-has-type? @_consequence compound_statement) + ) @dedent + (if_statement consequence: (compound_statement) @dedent) + ] + )@indent + (#not-has-type? @_consequence compound_statement) +) + +( + ERROR + "for" "(" @indent ";" ";" ")" @indent_end) +( + (for_statement + body: (_) @_body + ) @indent + (#not-has-type? @_body compound_statement) +) + +( + while_statement + condition: (_) @indent +) +( + (while_statement + body: (_) @_body + ) @indent + (#not-has-type? @_body compound_statement) +) + (compound_statement "}" @indent_end) [ - "else" ")" "}" (statement_identifier) |
