-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Add basic task support #3777
Add basic task support #3777
Conversation
This adds basic support for running `cargo build`, `cargo run`, etc.
Just curious, do we want to implement these kind of features in server side, such that it could also be used in other editors ? |
We have Rust Analyzer: Run command, which is a strictly better feature. microsoft/language-server-protocol#944 tracks its addition to the protocol (no one is actively working on that right now) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me with a nit fixed!
bors d+
bors r+ Thanks! |
3777: Add basic task support r=matklad a=Timmmm This adds basic support for running `cargo build`, `cargo run`, etc. Fixes #1935 I have tested this and it seems to work. There are two things I'm not sure about: 1. The workspace folder handling seems wrong - just get the first workspace folder? Is this just a TODO item? I don't know if it is right to lift `workspaceFolder` up to `activate()` but I couldn't see another way. 2. If you manually add an entry to `tasks.json` like this: ``` { "type": "cargo", "command": "build", "problemMatcher": [ "$rustc" ], "group": "build" } ``` then VSCode somehow magically knows to run `cargo build`. The documentation for `resolveTask` *sounds* like I should have to implement that for it to work: ``` * Resolves a task that has no [`execution`](#Task.execution) set. Tasks are * often created from information found in the `tasks.json`-file. Such tasks miss * the information on how to execute them and a task provider must fill in * the missing information in the `resolveTask`-method. ``` But then it also says this: ``` * This method will not be * called for tasks returned from the above `provideTasks` method since those * tasks are always fully resolved. A valid default implementation for the * `resolveTask` method is to return `undefined`. ``` Either way, it works without implementing it so the only thing I can think is that it is doing some kind of crazy pattern matching of the tasks returned by `provideTasks()` and the ones found in `tasks.json`. Co-authored-by: Tim <[email protected]>
Timed out |
hm, bors r+ ? |
Build succeeded |
This adds basic support for running
cargo build
,cargo run
, etc.Fixes #1935
I have tested this and it seems to work. There are two things I'm not sure about:
workspaceFolder
up toactivate()
but I couldn't see another way.tasks.json
like this:then VSCode somehow magically knows to run
cargo build
. The documentation forresolveTask
sounds like I should have to implement that for it to work:But then it also says this:
Either way, it works without implementing it so the only thing I can think is that it is doing some kind of crazy pattern matching of the tasks returned by
provideTasks()
and the ones found intasks.json
.