mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 10:08:49 +01:00
@@ -242,6 +242,9 @@ namespace CompletionConfiguration {
|
||||
}
|
||||
|
||||
export default class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider {
|
||||
|
||||
public static readonly triggerCharacters = ['.', '"', '\'', '/', '@'];
|
||||
|
||||
constructor(
|
||||
private readonly client: ITypeScriptServiceClient,
|
||||
private readonly typingsStatus: TypingsStatus,
|
||||
@@ -279,10 +282,11 @@ export default class TypeScriptCompletionItemProvider implements vscode.Completi
|
||||
return [];
|
||||
}
|
||||
|
||||
const args: Proto.CompletionsRequestArgs = {
|
||||
const args: Proto.CompletionsRequestArgs & { triggerCharacter?: string } = {
|
||||
...typeConverters.Position.toFileLocationRequestArgs(file, position),
|
||||
includeExternalModuleExports: completionConfiguration.autoImportSuggestions,
|
||||
includeInsertTextCompletions: true
|
||||
includeInsertTextCompletions: true,
|
||||
triggerCharacter: context.triggerCharacter
|
||||
};
|
||||
|
||||
let msg: Proto.CompletionEntry[] | undefined = undefined;
|
||||
@@ -437,7 +441,7 @@ export default class TypeScriptCompletionItemProvider implements vscode.Completi
|
||||
line: vscode.TextLine,
|
||||
position: vscode.Position
|
||||
): boolean {
|
||||
if (context.triggerCharacter === '"' || context.triggerCharacter === '\'') {
|
||||
if ((context.triggerCharacter === '"' || context.triggerCharacter === '\'') && !this.client.apiVersion.has290Features()) {
|
||||
if (!config.quickSuggestionsForPaths) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -92,9 +92,10 @@ export default class LanguageProvider {
|
||||
const selector = this.documentSelector;
|
||||
const config = workspace.getConfiguration(this.id);
|
||||
|
||||
const TypeScriptCompletionItemProvider = (await import('./features/completionItemProvider')).default;
|
||||
this.disposables.push(languages.registerCompletionItemProvider(selector,
|
||||
new (await import('./features/completionItemProvider')).default(client, typingsStatus, commandManager),
|
||||
'.', '"', '\'', '/', '@'));
|
||||
new TypeScriptCompletionItemProvider(client, typingsStatus, commandManager),
|
||||
...TypeScriptCompletionItemProvider.triggerCharacters));
|
||||
|
||||
this.disposables.push(languages.registerCompletionItemProvider(selector, new (await import('./features/directiveCommentCompletionProvider')).default(client), '@'));
|
||||
|
||||
|
||||
@@ -101,4 +101,9 @@ export default class API {
|
||||
public has280Features(): boolean {
|
||||
return semver.gte(this.version, '2.8.0');
|
||||
}
|
||||
|
||||
@memoize
|
||||
public has290Features(): boolean {
|
||||
return semver.gte(this.version, '2.9.0');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user