rust/editors/code
bors[bot] 8865db6768 Merge #1454
1454: Fix `cargo watch` code action filtering r=etaoins a=etaoins

There are two issues with the implementation of `provideCodeActions` introduced in #1439:

1. We're returning the code action based on the file its diagnostic is in; not the file the suggested fix is in. I'm not sure how often fixes are suggested cross-file but it's something we should handle.

2. We're not filtering code actions based on the passed range. The means if there is any suggestion in a file we'll show an action for every line of the file. I naively thought that VS Code would filter for us but that was wrong.

Unfortunately the VS Code `CodeAction` object is very complex - it can handle edits across multiple files, run commands, etc. This makes it complex to check them for equality or see if any of their edits intersects with a specified range.

To make it easier to work with suggestions this introduces a `SuggestedFix` model object and a `SuggestFixCollection` code action provider. This is a layer between the raw Rust JSON and VS Code's `CodeAction`s. I was reluctant to introduce another layer of abstraction here but my attempt to work directly with VS Code's model objects was worse.

Co-authored-by: Ryan Cumming <etaoins@gmail.com>
2019-06-29 09:50:56 +00:00
..
.vscode Initial Visual Studio Code unit tests 2019-06-26 20:31:36 +10:00
src Merge #1454 2019-06-29 09:50:56 +00:00
.gitignore rename all things 2018-09-16 13:07:39 +03:00
.vscodeignore rename all things 2018-09-16 13:07:39 +03:00
package-lock.json Semantic highlighting spike 2019-05-27 11:26:33 +02:00
package.json Initial Visual Studio Code unit tests 2019-06-26 20:31:36 +10:00
tsconfig.json Add noUnusedLocals to VsCode tsconfig 2019-06-29 18:00:22 +10:00
tslint.json Run prettier on all files 2018-10-08 22:38:33 +01:00