Description
Maybe this is wishful thinking but I am experiencing many subtle issues with the relatively new editor.autoIndent
feature. It's a very useful one and I want to keep it but it misbehaves quite frequently, see e.g. issues #29390, #32333 and many others. Quite a good example is this (from #32835):
Indentation via Format Document:
const MyReactComponent = (props) => {
return (
<div>
<Helmet titleTemplate='%s'>
<title>Hello</title>
</Helmet>
</div>
);
};
Formatting via Reindent Lines:
const MyReactComponent = (props) => {
return (
<div>
<Helmet titleTemplate='%s'>
<title>Hello</title>
</Helmet>
</div>
);
};
It often seems to me that formatting API produces better results than indentation rules but even if that wasn't always the case it just seems logical to have a single API to power both features. It seems like this to me:
- Indenting functionality cares about the leading whitespaces.
- Formatting cares about the above plus anything after the first non-whitespace character.
So it's a subset / superset problem and I don't think it should be implemented twice, in a completely different manner. What do you think? Would there be a chance to unify the two APIs and eliminate some bugs along the way?
For reference, some key issues related to this:
- Auto Indent / Code Formatting / Beautify Auto Indent / Code Formatting / Beautify #4039
- improve indentation rules improve indentation rules #17868
- Options for automatic indentation Options for automatic indentation #19303