aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_cargo_watch/src
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Move snaps to new naming schemeJeremy Kolb2020-01-267-0/+0
|
* Remove RWLock from check watcher.Emil Lauridsen2020-01-232-6/+5
| | | | | | | | | | | | | | @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
|
* Fix unused import for windows in cargo_watch testEdwin Cheng2020-01-031-0/+2
|
* Disable cargo_watch snapshot tests on windowsEmil Lauridsen2020-01-011-0/+7
|
* Merge #2681bors[bot]2019-12-293-2/+307
|\ | | | | | | | | | | | | | | 2681: cargo-watcher: Resolve macro call site in more cases r=matklad a=kiljacken This resolves the actual macro call site in a few more cases, f.x. when a macro invokes `compile_error!` (I'm looking at you `ra_hir_def::path::__path`). Co-authored-by: Emil Lauridsen <[email protected]>
| * Add related information with original error siteEmil Lauridsen2019-12-293-1/+306
| |
| * Resolve macro call site in more casesEmil Lauridsen2019-12-291-1/+1
| |
* | Lowercase drive letters when getting paths from cargo checkEmil Lauridsen2019-12-292-2/+68
|/
* 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.
* Add doc comment to moduleEmil Lauridsen2019-12-271-0/+2
|
* 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-279-0/+1681