diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2023-09-18 19:55:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-18 19:55:24 +0100 |
commit | f7ba7013045fc0629092ea4e07ce5c768a7ee95f (patch) | |
tree | 07be3b7a8f68fe9fd6977430450b16136937da8a /cli/lsp/tsc.rs | |
parent | d72f5d573a59fc20ba465dffd1698984c7dde024 (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.rs | 15 |
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, |