;;How to write indents: ;;think about the structures that should have indents inside and mark them with indent and extend ;;think about the structures that indicate the end of an indent and mark them with extend.prevent-once ;;find partially complete structures and create speciall rules for them. ;;eg: (ERROR (is)) [ (value_declaration) (then) (else) (when_is_expr) (when_is_branch) (record_field_expr) ;(function_call_expr) ; (function_type) (annotation_type_def) ; (parenthesized_type) (interface_header) (expect) ] @indent [ (value_declaration) (then) (else) (when_is_expr) (when_is_branch) (record_field_expr) ;(function_call_expr) ; (function_type) (annotation_type_def) (interface_header) (expect) ; (record_expr) ] @extend [ (exposes) (imports) (provides) (requires) ]@indent (ERROR "expect")@indent @extend [ "[" "{" "("]@indent @extend ["}" "]" ")"]@outdent [ (record_expr) (list_expr) (tuple_expr) (record_pattern) (list_pattern) (tuple_pattern) (tuple_type) (parenthesized_type) (parenthesized_expr) (paren_pattern) ]@indent ;;starting a when is expression (ERROR (is)@indent @extend) ;;starting a record_field (ERROR ":"@indent @extend) ;starting a type annotation (ERROR "(")@indent @extend ;starting a variable declaration (ERROR "=")@indent @extend ;;It's annoying when pipelines automatically dedent this pervents that (expr_body result: (bin_op_expr) )@extend ;this automatically dedents, this may be more annying than helpful when writing pipelines (expr_body result: (_) ) @extend.prevent-once ;;If we maybe don't want all expressions causing dedents ; (value_declaration ; (expr_body ; result: (_) ; ) @extend.prevent-once ; ) ; (then ; (expr_body ; result: (_) ; ) @extend.prevent-once ; ) ; (else ; (expr_body ; result: (_) ; ) @extend.prevent-once ; ) ; (when_is_branch ; (expr_body ; result: (_) ; )@extend.prevent-once ; ) ; (expect ; (expr_body ; result: (_) ; )@extend.prevent-once ; ) ; (record_field_expr ; (expr_body ; result: (_) ; ) @extend.prevent-once ; ) ; (record_field_expr ; (expr_body ; result: (_) ; ) @extend.prevent-once ; )