Pull options outwards
This commit is contained in:
@@ -14,7 +14,7 @@ use std::{
|
||||
time::{Duration, Instant},
|
||||
};
|
||||
|
||||
use crossbeam_channel::{select, unbounded, RecvError, Sender};
|
||||
use crossbeam_channel::{never, select, unbounded, RecvError, Sender};
|
||||
use lsp_server::{Connection, ErrorCode, Message, Notification, Request, RequestId, Response};
|
||||
use lsp_types::{
|
||||
ClientCapabilities, NumberOrString, WorkDoneProgress, WorkDoneProgressBegin,
|
||||
@@ -232,7 +232,7 @@ pub fn main_loop(
|
||||
Err(RecvError) => return Err("vfs died".into()),
|
||||
},
|
||||
recv(libdata_receiver) -> data => Event::Lib(data.unwrap()),
|
||||
recv(world_state.check_watcher.task_recv) -> task => match task {
|
||||
recv(world_state.check_watcher.as_ref().map_or(&never(), |it| &it.task_recv)) -> task => match task {
|
||||
Ok(task) => Event::CheckWatcher(task),
|
||||
Err(RecvError) => return Err("check watcher died".into()),
|
||||
}
|
||||
@@ -443,7 +443,9 @@ fn loop_turn(
|
||||
&& loop_state.in_flight_libraries == 0
|
||||
{
|
||||
loop_state.workspace_loaded = true;
|
||||
world_state.check_watcher.update();
|
||||
if let Some(check_watcher) = &world_state.check_watcher {
|
||||
check_watcher.update();
|
||||
}
|
||||
pool.execute({
|
||||
let subs = loop_state.subscriptions.subscriptions();
|
||||
let snap = world_state.snapshot();
|
||||
@@ -615,7 +617,9 @@ fn on_notification(
|
||||
};
|
||||
let not = match notification_cast::<req::DidSaveTextDocument>(not) {
|
||||
Ok(_params) => {
|
||||
state.check_watcher.update();
|
||||
if let Some(check_watcher) = &state.check_watcher {
|
||||
check_watcher.update();
|
||||
}
|
||||
return Ok(());
|
||||
}
|
||||
Err(not) => not,
|
||||
|
||||
@@ -57,7 +57,7 @@ pub struct WorldState {
|
||||
pub vfs: Arc<RwLock<Vfs>>,
|
||||
pub task_receiver: Receiver<VfsTask>,
|
||||
pub latest_requests: Arc<RwLock<LatestRequests>>,
|
||||
pub check_watcher: CheckWatcher,
|
||||
pub check_watcher: Option<CheckWatcher>,
|
||||
pub diagnostics: DiagnosticCollection,
|
||||
}
|
||||
|
||||
@@ -176,11 +176,11 @@ impl WorldState {
|
||||
})
|
||||
.map(|cargo| {
|
||||
let cargo_project_root = cargo.workspace_root().to_path_buf();
|
||||
CheckWatcher::new(&options.cargo_watch, cargo_project_root)
|
||||
Some(CheckWatcher::new(&options.cargo_watch, cargo_project_root))
|
||||
})
|
||||
.unwrap_or_else(|| {
|
||||
log::warn!("Cargo check watching only supported for cargo workspaces, disabling");
|
||||
CheckWatcher::dummy()
|
||||
None
|
||||
});
|
||||
|
||||
let mut analysis_host = AnalysisHost::new(lru_capacity);
|
||||
|
||||
Reference in New Issue
Block a user