Older code was calculating body indentation depending on function
parameters alignment. This is incorrect, because if parameters are
misaligned, so will the function body. Instead, use offset of the
previous standalone parent.
* lisp/progmodes/typescript-ts-mode.el:
(typescript-ts-mode--indent-rules): Stop depending on function
parameters indentation for calculating body content and the closing
`}'.
* test/lisp/progmodes/typescript-ts-mode-resources/indent.erts:
(Function body with params misindented (bug#78121)): Add new test.
(cherry picked from commit
1d2ae31b8bcca5f00c3c707cc7af3a347749c332)
(typescript-ts-mode--check-dialect language)
`((,language
((parent-is "program") column-0 0)
- ((node-is "}") parent-bol 0)
+ ((node-is "}") standalone-parent 0)
((node-is ")") parent-bol 0)
((node-is "]") parent-bol 0)
((node-is ">") parent-bol 0)
((parent-is "ternary_expression") standalone-parent typescript-ts-mode-indent-offset)
((parent-is "member_expression") parent-bol typescript-ts-mode-indent-offset)
((parent-is "named_imports") parent-bol typescript-ts-mode-indent-offset)
- ((parent-is "statement_block") parent-bol typescript-ts-mode-indent-offset)
+ ((parent-is "statement_block") standalone-parent typescript-ts-mode-indent-offset)
((or (node-is "case")
(node-is "default"))
parent-bol typescript-ts-mode-indent-offset)
bar?: boolean;
}
=-=-=
+
+Code:
+ (lambda ()
+ (setq tsx-ts-mode-indent-offset 2)
+ (tsx-ts-mode)
+ (setq indent-tabs-mode nil)
+ (indent-region (line-beginning-position 7) (point-max)))
+
+Name: Function body with params misindented (bug#78121)
+
+=-=
+const f1 = (a1: string,
+ a2: number) => {
+ const f2 = (a1: string,
+ a2: number) => {
+ const f3 = (a1: string,
+ a2: number) =>
+ {
+ return;
+ }
+ return;
+ }
+ return;
+}
+=-=-=