diff options
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r-- | cli/lsp/tsc.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index 278a1b5d3..7442f8a1e 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -2603,6 +2603,7 @@ impl CompletionInfo { settings: &config::CompletionSettings, specifier: &ModuleSpecifier, position: u32, + language_server: &language_server::Inner, ) -> lsp::CompletionResponse { let items = self .entries @@ -2614,6 +2615,7 @@ impl CompletionInfo { settings, specifier, position, + language_server, ) }) .collect(); @@ -2808,8 +2810,10 @@ impl CompletionEntry { settings: &config::CompletionSettings, specifier: &ModuleSpecifier, position: u32, + language_server: &language_server::Inner, ) -> lsp::CompletionItem { let mut label = self.name.clone(); + let mut label_details: Option<lsp::CompletionItemLabelDetails> = None; let mut kind: Option<lsp::CompletionItemKind> = Some(self.kind.clone().into()); @@ -2865,6 +2869,30 @@ impl CompletionEntry { } } + if let Some(source) = &self.source { + let mut source = source.clone(); + if let Some(data) = &self.data { + if let Ok(import_data) = + serde_json::from_value::<CompletionEntryDataImport>(data.clone()) + { + if let Ok(import_specifier) = + normalize_specifier(import_data.file_name) + { + if let Some(new_module_specifier) = language_server + .get_ts_response_import_mapper() + .check_specifier(&import_specifier, specifier) + .or_else(|| relative_specifier(specifier, &import_specifier)) + { + source = new_module_specifier; + } + } + } + } + label_details + .get_or_insert_with(Default::default) + .description = Some(source); + } + let text_edit = if let (Some(text_span), Some(new_text)) = (range, &insert_text) { let range = text_span.to_range(line_index); @@ -2889,6 +2917,7 @@ impl CompletionEntry { lsp::CompletionItem { label, + label_details, kind, sort_text, preselect, |