Skip to content

Commit 02b6b06

Browse files
authored
fix: prevent false-positive auto completions on Svelte components (#2564)
Because Svelte components take precedence, we leave out commit characters to not auto complete in weird places (e.g. when you have `foo.filter(a => a)`) and get autocomplete for component A, then a commit character of `.` would auto import the component which is not what we want Found after merging #2545 and playing around with it a bit
1 parent b823694 commit 02b6b06

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

packages/language-server/src/plugins/typescript/features/CompletionProvider.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionRe
695695
label,
696696
insertText,
697697
kind: scriptElementKindToCompletionItemKind(comp.kind),
698-
commitCharacters: this.getCommitCharacters(comp, commitCharactersOptions),
698+
commitCharacters: this.getCommitCharacters(comp, commitCharactersOptions, isSvelteComp),
699699
// Make sure svelte component and runes take precedence
700700
sortText: isRunesCompletion || isSvelteComp ? '-1' : comp.sortText,
701701
preselect: isRunesCompletion || isSvelteComp ? true : comp.isRecommended,
@@ -791,7 +791,18 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionRe
791791
};
792792
}
793793

794-
private getCommitCharacters(entry: ts.CompletionEntry, options: CommitCharactersOptions) {
794+
private getCommitCharacters(
795+
entry: ts.CompletionEntry,
796+
options: CommitCharactersOptions,
797+
isSvelteComp: boolean
798+
) {
799+
// Because Svelte components take precedence, we leave out commit characters to not auto complete
800+
// in weird places (e.g. when you have foo.filter(a => a)) and get autocomplete for component A,
801+
// then a commit character of `.` would auto import the component which is not what we want
802+
if (isSvelteComp) {
803+
return ['>'];
804+
}
805+
795806
// https://github.com/microsoft/vscode/blob/d012408e88ffabd6456c367df4d343654da2eb10/extensions/typescript-language-features/src/languageFeatures/completions.ts#L504
796807
if (!options.checkCommitCharacters) {
797808
return undefined;

0 commit comments

Comments
 (0)