1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-05 22:20:24 -08:00

typescript-ts-mode: Improve function body indentation (bug#78121)

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.
This commit is contained in:
Konstantin Kharlamov 2025-04-29 21:51:18 +07:00 committed by Yuan Fu
parent 421ecbcf6b
commit 1d2ae31b8b
No known key found for this signature in database
GPG key ID: 56E19BC57664A442
2 changed files with 27 additions and 2 deletions

View file

@ -111,7 +111,7 @@ declarations, accounting for the length of keyword (var, let, or const)."
Argument LANGUAGE is either `typescript' or `tsx'."
`((,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)
@ -121,7 +121,7 @@ Argument LANGUAGE is either `typescript' or `tsx'."
((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)

View file

@ -164,3 +164,28 @@ interface Foo {
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;
}
=-=-=