aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_cargo_watch/src/lib.rs
Commit message (Collapse)AuthorAgeFilesLines
* Prevent child cargo process from messing with our stdinAleksey Kladov2020-02-011-0/+1
| | | | | | | | By default, `spawn` inherits stderr/stdout/stderr of the parent process, and so, if child, for example does fcntl(O_NONBLOCK), weird stuff happens to us. Closes https://github.com/rust-analyzer/lsp-server/pull/10
* Change error output to make a bit more senseEmil Lauridsen2020-01-291-2/+6
|
* Parse cargo output a line at a time.Emil Lauridsen2020-01-291-5/+21
| | | | | | | | | | | | | | | | | | We previously used serde's stream deserializer to read json blobs from the cargo output. It has an issue though: If the deserializer encounters invalid input, it gets stuck reporting the same error again and again because it is unable to foward over the input until it reaches a new valid object. Reading a line at a time and manually deserializing fixes this issue, because cargo makes sure to only outpu one json blob per line, so should we encounter invalid input, we can just skip a line and continue. The main reason this would happen is stray printf-debugging in procedural macros, so we still report that an error occured, but we handle it gracefully now. Fixes #2935
* Merge #2924bors[bot]2020-01-281-2/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | 2924: Modify ordering of drops in check watcher to only ever have one cargo r=matklad a=kiljacken Due to the way drops are ordered when assigning to a mutable variable we were launching a new cargo sub-process before letting the old one quite. By explicitly replacing the original watcher with a dummy first, we ensure it is dropped and the process is completed, before we start the new process. Co-authored-by: Emil Lauridsen <[email protected]>
| * Modify ordering of drops in check watcher to only ever have one cargoEmil Lauridsen2020-01-281-2/+4
| | | | | | | | | | | | | | | | | | Due to the way drops are ordered when assigning to a mutable variable we were launching a new cargo sub-process before letting the old one quite. By explicitly replacing the original watcher with a dummy first, we ensure it is dropped and the process is completed, before we start the new process.
* | Don't do check progress update for fresh cratesEmil Lauridsen2020-01-281-0/+8
|/
* Buffer reads from cargo check's stdoutLaurențiu Nicola2020-01-271-1/+4
|
* Remove RWLock from check watcher.Emil Lauridsen2020-01-231-5/+4
| | | | | | | | | | | | | | @matklad mentioned this might be a good idea. So the general idea is that we don't really need the lock, as we can just clone the check watcher state when creating a snapshot. We can then use `Arc::get_mut` to get mutable access to the state from `WorldState` when needed. Running with this it seems to improve responsiveness a bit while cargo is running, but I have no hard numbers to prove it. In any case, a serialization point less is always better when we're trying to be responsive.
* Tweak naming slightlyEmil Lauridsen2020-01-151-5/+5
|
* Manage check state updates in main_loop to reduce lock contentionEmil Lauridsen2020-01-151-39/+35
|
* Defer cargo check until after workspace loadEmil Lauridsen2020-01-131-2/+11
|
* Disable cargo checking in workspaces with no cargo projectsEmil Lauridsen2020-01-111-0/+6
|
* Lowercase drive letters when getting paths from cargo checkEmil Lauridsen2019-12-291-0/+2
|
* Reduce visibilityAleksey Kladov2019-12-291-3/+3
|
* Fix busy-waiting issue in main cargo watch threadEmil Lauridsen2019-12-271-3/+5
|
* Don't finish main cargo watch thread when subprocess finishes.Emil Lauridsen2019-12-271-2/+1
|
* Fix shutdown behavoir of main cargo-watch thread.Emil Lauridsen2019-12-271-7/+8
| | | | | Even though this didn't error, it became clear to me that it was closing the wrong channel, resulting in the child thread never finishing.
* Cargo fmt runEmil Lauridsen2019-12-271-7/+1
|
* Shutdown/cancelation story for main cargo watch threadEmil Lauridsen2019-12-271-15/+32
|
* Consistent, hopefully robust, shutdown/cancelation story for cargo check ↵Emil Lauridsen2019-12-271-16/+50
| | | | subprocess
* Move cargo watch functionality to separate crateEmil Lauridsen2019-12-271-0/+345