An important special case in using the formatter is the smart indent performed when the user presses the Enter key in a source code file. To determine the indent for the new line, the formatter engine calls the method
getChildAttributes() on either the block immediately before the caret or the parent of that block, depending on the return value of the
isIncomplete() method for the block before the caret. If the block before the cursor is incomplete (contains elements that the user will probably type but has not yet typed, like a closing parenthesis of the parameter list or the trailing semicolon of a statement),
getChildAttributes() is called on the block before the caret; otherwise, it's called on the parent block.
New in 13: code formatting can be suppressed per region via special comments .
Code Style Settings
To specify the default indent size for the language provided by your plugin, and to allow the user to configure the tab size and indent size you need to implement the
FileTypeIndentOptionsProvider interface and to register the implementation in the
fileTypeIndentOptionsProvider extension point. The return value of
createIndentOptions() determines the default indent size.