summaryrefslogtreecommitdiff
path: root/cli/lsp/language_server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r--cli/lsp/language_server.rs26
1 files changed, 23 insertions, 3 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 25782b95c..cfc58439d 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -2,6 +2,8 @@
use base64::Engine;
use deno_ast::MediaType;
+use deno_config::workspace::Workspace;
+use deno_config::workspace::WorkspaceDiscoverOptions;
use deno_core::anyhow::anyhow;
use deno_core::error::AnyError;
use deno_core::resolve_url;
@@ -13,6 +15,7 @@ use deno_core::url;
use deno_core::ModuleSpecifier;
use deno_graph::GraphKind;
use deno_graph::Resolution;
+use deno_runtime::deno_fs::DenoConfigFsAdapter;
use deno_runtime::deno_tls::rustls::RootCertStore;
use deno_runtime::deno_tls::RootCertStoreProvider;
use deno_semver::jsr::JsrPackageReqReference;
@@ -3549,6 +3552,24 @@ impl Inner {
}
let workspace_settings = self.config.workspace_settings();
+ let initial_cwd = config_data
+ .and_then(|d| d.scope.to_file_path().ok())
+ .unwrap_or_else(|| self.initial_cwd.clone());
+ // todo: we need a way to convert config data to a Workspace
+ let workspace = Arc::new(Workspace::discover(
+ deno_config::workspace::WorkspaceDiscoverStart::Dirs(&[
+ initial_cwd.clone()
+ ]),
+ &WorkspaceDiscoverOptions {
+ fs: &DenoConfigFsAdapter::new(&deno_runtime::deno_fs::RealFs),
+ pkg_json_cache: None,
+ config_parse_options: deno_config::ConfigParseOptions {
+ include_task_comments: false,
+ },
+ additional_config_file_names: &[],
+ discover_pkg_json: true,
+ },
+ )?);
let cli_options = CliOptions::new(
Flags {
cache_path: Some(self.cache.deno_dir().root.clone()),
@@ -3572,13 +3593,12 @@ impl Inner {
type_check_mode: crate::args::TypeCheckMode::Local,
..Default::default()
},
- self.initial_cwd.clone(),
- config_data.and_then(|d| d.config_file.as_deref().cloned()),
+ initial_cwd,
config_data.and_then(|d| d.lockfile.clone()),
- config_data.and_then(|d| d.package_json.clone()),
config_data
.and_then(|d| d.npmrc.clone())
.unwrap_or_else(create_default_npmrc),
+ workspace,
force_global_cache,
)?;