Unnamed repository; edit this file 'description' to name the repository.
Add comments regarding workspace structure change querying
Lukas Wirth 2024-08-10
parent 6869b30 · commit 1829460
-rw-r--r--crates/rust-analyzer/src/global_state.rs5
-rw-r--r--crates/rust-analyzer/src/handlers/notification.rs2
-rw-r--r--crates/rust-analyzer/src/main_loop.rs1
3 files changed, 8 insertions, 0 deletions
diff --git a/crates/rust-analyzer/src/global_state.rs b/crates/rust-analyzer/src/global_state.rs
index df809c0723..d1f107a62a 100644
--- a/crates/rust-analyzer/src/global_state.rs
+++ b/crates/rust-analyzer/src/global_state.rs
@@ -460,6 +460,11 @@ impl GlobalState {
}
}
+ // FIXME: `workspace_structure_change` is computed from `should_refresh_for_change` which is
+ // path syntax based. That is not sufficient for all cases so we should lift that check out
+ // into a `QueuedTask`, see `handle_did_save_text_document`.
+ // Or maybe instead of replacing that check, kick off a semantic one if the syntactic one
+ // didn't find anything (to make up for the lack of precision).
{
if !matches!(&workspace_structure_change, Some((.., true))) {
_ = self
diff --git a/crates/rust-analyzer/src/handlers/notification.rs b/crates/rust-analyzer/src/handlers/notification.rs
index a2f9229047..de5d1f2313 100644
--- a/crates/rust-analyzer/src/handlers/notification.rs
+++ b/crates/rust-analyzer/src/handlers/notification.rs
@@ -158,6 +158,8 @@ pub(crate) fn handle_did_save_text_document(
.map(|cfg| cfg.files_to_watch.iter().map(String::as_str).collect::<Vec<&str>>())
.unwrap_or_default();
+ // FIXME: We should move this check into a QueuedTask and do semantic resolution of
+ // the files. There is only so much we can tell syntactically from the path.
if reload::should_refresh_for_change(path, ChangeKind::Modify, additional_files) {
state.fetch_workspaces_queue.request_op(
format!("workspace vfs file change saved {path}"),
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index 8035b7867c..e303765aab 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -105,6 +105,7 @@ pub(crate) enum Task {
FetchWorkspace(ProjectWorkspaceProgress),
FetchBuildData(BuildDataProgress),
LoadProcMacros(ProcMacroProgress),
+ // FIXME: Remove this in favor of a more general QueuedTask, see `handle_did_save_text_document`
BuildDepsHaveChanged,
}