Let API Consumer decide whether a LintError has to be autocorrected, or not #2671
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
When formatting code, the API Consumer should be able to decide whether a
LintError
has to be autocorrected, or not. In most cases the API Consumer wants to autocorrect all errors that have an autocorrect fix when formatting the code.The
ktlint-intellij-plugin
has two use cases in which not allLintError
having an autocorrect should be fixed when invoking theformat
functionality.manual
mode the plugin shows allLintError
s. Users want to be able to choose to autocorrect a specificLintError
, while at the same time ignoring otherLintErrors
.LintError
s in the selected text.To avoid breaking changes in Ktlint 1.x, a new
RuleAutocorrectApproveHandler
interface is added. This interfaces defines the new signatures for functionsbeforeVisitChildNodes
andafterVisitChildNodes
. Rules that implement this interface will request the API Consumer to approve to autocorrect aLintError
before continuing with formatting the code.Closes #2658
Checklist
Before submitting the PR, please check following (checks which are not relevant may be ignored):
Closes #<xxx>
orFixes #<xxx>
(replace<xxx>
with issue number)Documentation is updated. See difference between snapshot and release documentation