summaryrefslogtreecommitdiff
path: root/cli/lsp/tsc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r--cli/lsp/tsc.rs29
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,