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.
Easiest to review if you look at it per-commit, though there aren't too many changes overall so you could look at the overall diff too.
While investigating a pet peeve of mine in the VS Code C# experience (see below), I discovered that the CodeActionProvider class is using a legacy function signature for provideCodeActions. The new signature allows for returning CodeActions rather than Commands and also provides a more straightforward way to differentiate between Selections and Ranges.
Benefits:
Things seem to be behaving the same through a quick test I did with a file that had a diagnostic on
ReferenceEquals(null, obj)
.Note that the behavior I observed is different from what's documented in the VS Code API ("[
range
] will always be a selection if there is a currently active editor"), so it might be good to double-check me on that one.I've also taken this opportunity to constify everything, because it seemed like pretty low-hanging fruit.
The pet peeve is that quick fixes aren't displayed in this tooltip right here which misleadingly makes you believe that there's no quick fix support:
I've figured out that passing
kind: CodeActionKind.QuickFix
to each CodeAction will cause them to show up in that tooltip. But to do that, CodeActions have to be returned in the first place ;).