diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2024-01-17 20:22:28 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-17 20:22:28 +0000 |
commit | 2141543105dd9aabc0aca0534abc837f114e5bac (patch) | |
tree | e610510204beea26afa2d12178191ec78fcf151d /cli/lsp/language_server.rs | |
parent | 7662b056231b6ffa3106be795b9f19ab409543ab (diff) |
feat(lsp): send "deno/didChangeDenoConfiguration" on init (#21965)
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index a3c817526..921e34bcd 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -1629,7 +1629,10 @@ impl Inner { .iter() .filter(|e| files_to_check.contains(&e.uri)) .map(|e| lsp_custom::DenoConfigurationChangeEvent { - file_event: e.clone(), + uri: e.uri.clone(), + typ: lsp_custom::DenoConfigurationChangeType::from_file_change_type( + e.typ, + ), configuration_type: lsp_custom::DenoConfigurationType::DenoJson, }), ); @@ -1660,7 +1663,10 @@ impl Inner { .iter() .filter(|e| files_to_check.contains(&e.uri)) .map(|e| lsp_custom::DenoConfigurationChangeEvent { - file_event: e.clone(), + uri: e.uri.clone(), + typ: lsp_custom::DenoConfigurationChangeType::from_file_change_type( + e.typ, + ), configuration_type: lsp_custom::DenoConfigurationType::PackageJson, }), ); @@ -3303,6 +3309,30 @@ impl tower_lsp::LanguageServer for LanguageServer { ); ls.maybe_testing_server = Some(test_server); } + + let mut config_events = vec![]; + if let Some(config_file) = ls.config.maybe_config_file() { + config_events.push(lsp_custom::DenoConfigurationChangeEvent { + uri: config_file.specifier.clone(), + typ: lsp_custom::DenoConfigurationChangeType::Added, + configuration_type: lsp_custom::DenoConfigurationType::DenoJson, + }); + } + if let Some(package_json) = &ls.maybe_package_json { + config_events.push(lsp_custom::DenoConfigurationChangeEvent { + uri: package_json.specifier(), + typ: lsp_custom::DenoConfigurationChangeType::Added, + configuration_type: lsp_custom::DenoConfigurationType::PackageJson, + }); + } + if !config_events.is_empty() { + ls.client.send_did_change_deno_configuration_notification( + lsp_custom::DidChangeDenoConfigurationNotificationParams { + changes: config_events, + }, + ); + } + (ls.client.clone(), ls.http_client.clone()) }; |