summaryrefslogtreecommitdiff
path: root/cli/lsp
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2024-10-31 10:52:43 +0000
committerGitHub <noreply@github.com>2024-10-31 10:52:43 +0000
commit2f0c25d33fc0c8bb8e6e92826b2549f429d68d42 (patch)
treea80efeb107d3720a5f1ae528955f76549cb913b4 /cli/lsp
parent8bfd134da6d730cc1d182ab430b1713901d7a5b5 (diff)
fix(lsp): include unstable features from editor settings (#26655)
Diffstat (limited to 'cli/lsp')
-rw-r--r--cli/lsp/config.rs12
-rw-r--r--cli/lsp/language_server.rs10
-rw-r--r--cli/lsp/resolver.rs4
3 files changed, 16 insertions, 10 deletions
diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs
index 3ffc9e657..cac0637a0 100644
--- a/cli/lsp/config.rs
+++ b/cli/lsp/config.rs
@@ -41,6 +41,7 @@ use deno_runtime::deno_node::PackageJson;
use indexmap::IndexSet;
use lsp_types::ClientCapabilities;
use std::collections::BTreeMap;
+use std::collections::BTreeSet;
use std::collections::HashMap;
use std::ops::Deref;
use std::ops::DerefMut;
@@ -1190,6 +1191,7 @@ pub struct ConfigData {
pub resolver: Arc<WorkspaceResolver>,
pub sloppy_imports_resolver: Option<Arc<CliSloppyImportsResolver>>,
pub import_map_from_settings: Option<ModuleSpecifier>,
+ pub unstable: BTreeSet<String>,
watched_files: HashMap<ModuleSpecifier, ConfigWatchedFileType>,
}
@@ -1587,9 +1589,16 @@ impl ConfigData {
.join("\n")
);
}
+ let unstable = member_dir
+ .workspace
+ .unstable_features()
+ .iter()
+ .chain(settings.unstable.as_deref())
+ .cloned()
+ .collect::<BTreeSet<_>>();
let unstable_sloppy_imports = std::env::var("DENO_UNSTABLE_SLOPPY_IMPORTS")
.is_ok()
- || member_dir.workspace.has_unstable("sloppy-imports");
+ || unstable.contains("sloppy-imports");
let sloppy_imports_resolver = unstable_sloppy_imports.then(|| {
Arc::new(CliSloppyImportsResolver::new(
SloppyImportsCachedFs::new_without_stat_cache(Arc::new(
@@ -1630,6 +1639,7 @@ impl ConfigData {
lockfile,
npmrc,
import_map_from_settings,
+ unstable,
watched_files,
}
}
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 33ae539f8..a592245ce 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -1384,14 +1384,10 @@ impl Inner {
.clone();
fmt_options.use_tabs = Some(!params.options.insert_spaces);
fmt_options.indent_width = Some(params.options.tab_size as u8);
- let maybe_workspace = self
- .config
- .tree
- .data_for_specifier(&specifier)
- .map(|d| &d.member_dir.workspace);
+ let config_data = self.config.tree.data_for_specifier(&specifier);
let unstable_options = UnstableFmtOptions {
- component: maybe_workspace
- .map(|w| w.has_unstable("fmt-component"))
+ component: config_data
+ .map(|d| d.unstable.contains("fmt-component"))
.unwrap_or(false),
};
let document = document.clone();
diff --git a/cli/lsp/resolver.rs b/cli/lsp/resolver.rs
index c89273147..00587f8f5 100644
--- a/cli/lsp/resolver.rs
+++ b/cli/lsp/resolver.rs
@@ -555,8 +555,8 @@ fn create_graph_resolver(
workspace.to_maybe_jsx_import_source_config().ok().flatten()
}),
maybe_vendor_dir: config_data.and_then(|d| d.vendor_dir.as_ref()),
- bare_node_builtins_enabled: workspace
- .is_some_and(|workspace| workspace.has_unstable("bare-node-builtins")),
+ bare_node_builtins_enabled: config_data
+ .is_some_and(|d| d.unstable.contains("bare-node-builtins")),
sloppy_imports_resolver: config_data
.and_then(|d| d.sloppy_imports_resolver.clone()),
}))