mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-29 06:23:25 +00:00
Auto merge of #12007 - edwin0cheng:restart-proc-macro-reload, r=jonas-schievink
Restart proc-macro client when server reload Fix #10719
This commit is contained in:
commit
60c4f072eb
2 changed files with 14 additions and 6 deletions
|
@ -43,6 +43,13 @@ use crate::{
|
||||||
to_proto, LspError, Result,
|
to_proto, LspError, Result,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pub(crate) fn handle_workspace_reload(state: &mut GlobalState, _: ()) -> Result<()> {
|
||||||
|
state.proc_macro_client = None;
|
||||||
|
state.fetch_workspaces_queue.request_op("reload workspace request".to_string());
|
||||||
|
state.fetch_build_data_queue.request_op("reload workspace request".to_string());
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn handle_analyzer_status(
|
pub(crate) fn handle_analyzer_status(
|
||||||
snap: GlobalStateSnapshot,
|
snap: GlobalStateSnapshot,
|
||||||
params: lsp_ext::AnalyzerStatusParams,
|
params: lsp_ext::AnalyzerStatusParams,
|
||||||
|
|
|
@ -499,9 +499,13 @@ impl GlobalState {
|
||||||
self.fetch_workspaces(cause);
|
self.fetch_workspaces(cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !self.fetch_workspaces_queue.op_in_progress() {
|
||||||
if let Some(cause) = self.fetch_build_data_queue.should_start_op() {
|
if let Some(cause) = self.fetch_build_data_queue.should_start_op() {
|
||||||
self.fetch_build_data(cause);
|
self.fetch_build_data(cause);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if let Some(cause) = self.prime_caches_queue.should_start_op() {
|
if let Some(cause) = self.prime_caches_queue.should_start_op() {
|
||||||
tracing::debug!(%cause, "will prime caches");
|
tracing::debug!(%cause, "will prime caches");
|
||||||
let num_worker_threads = self.config.prime_caches_num_threads();
|
let num_worker_threads = self.config.prime_caches_num_threads();
|
||||||
|
@ -571,14 +575,11 @@ impl GlobalState {
|
||||||
}
|
}
|
||||||
|
|
||||||
RequestDispatcher { req: Some(req), global_state: self }
|
RequestDispatcher { req: Some(req), global_state: self }
|
||||||
.on_sync_mut::<lsp_ext::ReloadWorkspace>(|s, ()| {
|
|
||||||
s.fetch_workspaces_queue.request_op("reload workspace request".to_string());
|
|
||||||
Ok(())
|
|
||||||
})?
|
|
||||||
.on_sync_mut::<lsp_types::request::Shutdown>(|s, ()| {
|
.on_sync_mut::<lsp_types::request::Shutdown>(|s, ()| {
|
||||||
s.shutdown_requested = true;
|
s.shutdown_requested = true;
|
||||||
Ok(())
|
Ok(())
|
||||||
})?
|
})?
|
||||||
|
.on_sync_mut::<lsp_ext::ReloadWorkspace>(handlers::handle_workspace_reload)?
|
||||||
.on_sync_mut::<lsp_ext::MemoryUsage>(handlers::handle_memory_usage)?
|
.on_sync_mut::<lsp_ext::MemoryUsage>(handlers::handle_memory_usage)?
|
||||||
.on_sync_mut::<lsp_ext::ShuffleCrateGraph>(handlers::handle_shuffle_crate_graph)?
|
.on_sync_mut::<lsp_ext::ShuffleCrateGraph>(handlers::handle_shuffle_crate_graph)?
|
||||||
.on_sync::<lsp_ext::JoinLines>(handlers::handle_join_lines)?
|
.on_sync::<lsp_ext::JoinLines>(handlers::handle_join_lines)?
|
||||||
|
|
Loading…
Reference in a new issue