Function: js--treesit-indent-rules
js--treesit-indent-rules is a byte-compiled function defined in
js.el.gz.
Signature
(js--treesit-indent-rules)
Documentation
Return tree-sitter indent rules for js-ts-mode.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/js.el.gz
(defun js--treesit-indent-rules ()
"Return tree-sitter indent rules for `js-ts-mode'."
`((javascript
((parent-is "program") parent-bol 0)
((node-is "}") standalone-parent 0)
((node-is ")") parent-bol 0)
((node-is "]") parent-bol 0)
((node-is ">") parent-bol 0)
((and (parent-is "comment") c-ts-common-looking-at-star)
c-ts-common-comment-start-after-first-star -1)
((parent-is "comment") prev-adaptive-prefix 0)
((n-p-gp "identifier" "ternary_expression" "parenthesized_expression")
parent 0)
((parent-is "ternary_expression") parent-bol js-indent-level)
((parent-is "sequence_expression") parent 0)
((parent-is "member_expression") js--treesit-member-chained-expression-helper 0)
((parent-is "named_imports") parent-bol js-indent-level)
((parent-is "statement_block") standalone-parent js-indent-level)
((parent-is "variable_declarator") parent 0)
((parent-is "arguments") parent-bol js-indent-level)
((parent-is "array") parent-bol js-indent-level)
((parent-is "formal_parameters") parent-bol js-indent-level)
((parent-is "template_string") no-indent) ; Don't indent the string contents.
((parent-is "template_substitution") parent-bol js-indent-level)
((parent-is "object_pattern") parent-bol js-indent-level)
((parent-is "object") parent-bol js-indent-level)
((parent-is "pair") parent-bol js-indent-level)
((parent-is "arrow_function") js--treesit-arrow-function-helper 0)
((parent-is "parenthesized_expression") parent-bol js-indent-level)
((parent-is "binary_expression") parent-bol js-indent-level)
((parent-is "assignment_expression") parent-bol js-indent-level)
((parent-is "class_body") parent-bol js-indent-level)
;; "{" on the newline, should stay here.
((node-is "statement_block") parent-bol 0)
((parent-is "switch_statement") parent-bol 0)
((parent-is "switch_body") js--treesit-switch-body-helper 0)
((parent-is ,(rx "switch_" (or "case" "default"))) parent-bol js-indent-level)
((match "while" "do_statement") parent-bol 0)
((match "else" "if_statement") parent-bol 0)
((parent-is ,(rx (or (seq (or "if" "for" "for_in" "while" "do") "_statement")
"else_clause")))
parent-bol js-indent-level)
;; JSX
,@(js-jsx--treesit-indent-compatibility-bb1f97b)
((node-is "jsx_closing_element") parent 0)
((match "jsx_element" "statement") parent js-indent-level)
((parent-is "jsx_element") parent js-indent-level)
((parent-is "jsx_text") parent-bol js-indent-level)
((parent-is "jsx_opening_element") parent js-indent-level)
((parent-is "jsx_expression") parent-bol js-indent-level)
((match "/" "jsx_self_closing_element") parent 0)
((parent-is "jsx_self_closing_element") parent js-indent-level)
;; FIXME(Theo): This no-node catch-all should be removed. When is it needed?
(no-node parent-bol 0))
(jsdoc
((and (parent-is "document") c-ts-common-looking-at-star)
c-ts-common-comment-start-after-first-star -1))))