summaryrefslogtreecommitdiff
path: root/cli/lsp/tsc.rs
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2023-09-18 19:55:24 +0100
committerGitHub <noreply@github.com>2023-09-18 19:55:24 +0100
commitf7ba7013045fc0629092ea4e07ce5c768a7ee95f (patch)
tree07be3b7a8f68fe9fd6977430450b16136937da8a /cli/lsp/tsc.rs
parentd72f5d573a59fc20ba465dffd1698984c7dde024 (diff)
fix(lsp): prefer local auto-import specifiers (#20539)
Give auto-import completion entries a sort-text suffix depending on if the specifier parses as a URL. This will favour relative and bare (likely import-mapped) specifiers.
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r--cli/lsp/tsc.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs
index 7442f8a1e..2c63131b6 100644
--- a/cli/lsp/tsc.rs
+++ b/cli/lsp/tsc.rs
@@ -2817,10 +2817,10 @@ impl CompletionEntry {
let mut kind: Option<lsp::CompletionItemKind> =
Some(self.kind.clone().into());
- let sort_text = if self.source.is_some() {
- Some(format!("\u{ffff}{}", self.sort_text))
+ let mut sort_text = if self.source.is_some() {
+ format!("\u{ffff}{}", self.sort_text)
} else {
- Some(self.sort_text.clone())
+ self.sort_text.clone()
};
let preselect = self.is_recommended;
@@ -2888,6 +2888,13 @@ impl CompletionEntry {
}
}
}
+ // We want relative or bare (import-mapped or otherwise) specifiers to
+ // appear at the top.
+ if resolve_url(&source).is_err() {
+ sort_text += "_0";
+ } else {
+ sort_text += "_1";
+ }
label_details
.get_or_insert_with(Default::default)
.description = Some(source);
@@ -2919,7 +2926,7 @@ impl CompletionEntry {
label,
label_details,
kind,
- sort_text,
+ sort_text: Some(sort_text),
preselect,
text_edit,
filter_text,