summaryrefslogtreecommitdiff
path: root/cli/lsp/language_server.rs
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2023-07-20 14:05:52 -0400
committerGitHub <noreply@github.com>2023-07-20 14:05:52 -0400
commit235fdc243faa6d0fc008dc7fa482c29e511c2fa0 (patch)
treec01444f783abe922b98da1b416e15fba8409732d /cli/lsp/language_server.rs
parentbf775e3306faeb2a18525ba38f9c3e60e1e5ed16 (diff)
fix(lsp): auto-discover deno.json in more cases (#19894)
We weren't auto-discovering the deno.json in two cases: 1. A project that didn't have a deno.json and just added one. 2. After a syntax error in the deno.json. This now rediscovers it in both these cases. Closes https://github.com/denoland/vscode_deno/issues/867
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r--cli/lsp/language_server.rs40
1 files changed, 24 insertions, 16 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs
index 6dead0fcf..5a4c3aeae 100644
--- a/cli/lsp/language_server.rs
+++ b/cli/lsp/language_server.rs
@@ -1493,22 +1493,30 @@ impl Inner {
.collect();
// if the current deno.json has changed, we need to reload it
- if let Some(config_file) = self.config.maybe_config_file() {
- if changes.contains(&config_file.specifier)
- || self
- .config
- .maybe_lockfile()
- .map(|l| has_lockfile_changed(&l.lock(), &changes))
- .unwrap_or(false)
- {
- if let Err(err) = self.update_config_file().await {
- self.client.show_message(MessageType::WARNING, err);
- }
- if let Err(err) = self.update_tsconfig().await {
- self.client.show_message(MessageType::WARNING, err);
- }
- touched = true;
+ let has_config_changed = match self.config.maybe_config_file() {
+ Some(config_file) => changes.contains(&config_file.specifier),
+ None => {
+ // check for auto-discovery
+ changes.iter().any(|url| {
+ url.path().ends_with("/deno.json")
+ || url.path().ends_with("/deno.jsonc")
+ })
}
+ } || match self.config.maybe_lockfile() {
+ Some(lockfile) => has_lockfile_changed(&lockfile.lock(), &changes),
+ None => {
+ // check for auto-discovery
+ changes.iter().any(|url| url.path().ends_with("/deno.lock"))
+ }
+ };
+ if has_config_changed {
+ if let Err(err) = self.update_config_file().await {
+ self.client.show_message(MessageType::WARNING, err);
+ }
+ if let Err(err) = self.update_tsconfig().await {
+ self.client.show_message(MessageType::WARNING, err);
+ }
+ touched = true;
}
if let Some(package_json) = &self.maybe_package_json {
@@ -2940,7 +2948,7 @@ impl tower_lsp::LanguageServer for LanguageServer {
let watch_registration_options =
DidChangeWatchedFilesRegistrationOptions {
watchers: vec![FileSystemWatcher {
- glob_pattern: "**/*.{json,jsonc}".to_string(),
+ glob_pattern: "**/*.{json,jsonc,lock}".to_string(),
kind: Some(WatchKind::Change),
}],
};