-
Notifications
You must be signed in to change notification settings - Fork 506
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Let API Consumer decide whether a LintError has to be autocorrected, or not #2671
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
If a rule implements this interface, and changes the methods beforeVisitChildNodes and/or afterVisitChildNodes in compliance with this interface then the rule is able to support fixing of individual violations by requesting approval to autocorrect each violation found. For this the handler needs to be implemented by the API Consumer that is calling the format function of the KtLintRuleEngine. For now this is implemented in a separate interface to prevent breaking changes in the Rule 1.x API.
…that all lint errors which are found in the autocorrect offset range will be fixed
…ocorrectHandler / rename AutocorrectHandlers
…ault autocorrect value for rules that do not implement the RuleAutocorrectApproveHandler
Linting is same as Format with autocorrect disabled always
… the legacy format Closes #2658
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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