diff --git a/extensions/typescript-language-features/src/features/completions.ts b/extensions/typescript-language-features/src/features/completions.ts index 73db713846b..00e0dd4d74e 100644 --- a/extensions/typescript-language-features/src/features/completions.ts +++ b/extensions/typescript-language-features/src/features/completions.ts @@ -23,8 +23,6 @@ import FileConfigurationManager from './fileConfigurationManager'; const localize = nls.loadMessageBundle(); -const knownTsTriggerCharacters = new Set(['.', '"', '\'', '`', '/', '@', '<']); - interface DotAccessorContext { readonly range: vscode.Range; readonly text: string; @@ -461,18 +459,23 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider } private getTsTriggerCharacter(context: vscode.CompletionContext): Proto.CompletionsTriggerCharacter | undefined { - // Workaround for https://github.com/Microsoft/TypeScript/issues/27321 - if (context.triggerCharacter === '@' - && this.client.apiVersion.gte(API.v310) && this.client.apiVersion.lt(API.v320) - ) { - return undefined; + switch (context.triggerCharacter) { + case '@': // Workaround for https://github.com/Microsoft/TypeScript/issues/27321 + return this.client.apiVersion.gte(API.v310) && this.client.apiVersion.lt(API.v320) ? undefined : '@'; + + case '#': // Workaround for https://github.com/microsoft/TypeScript/issues/36367 + return this.client.apiVersion.lt(API.v381) ? undefined : '#' as Proto.CompletionsTriggerCharacter; + + case '.': + case '"': + case '\'': + case '`': + case '/': + case '<': + return context.triggerCharacter; } - if (context.triggerCharacter && !knownTsTriggerCharacters.has(context.triggerCharacter)) { - return undefined; - } - - return context.triggerCharacter as Proto.CompletionsTriggerCharacter; + return undefined; } public async resolveCompletionItem( diff --git a/extensions/typescript-language-features/src/utils/api.ts b/extensions/typescript-language-features/src/utils/api.ts index fd2625b950e..4a1c217471d 100644 --- a/extensions/typescript-language-features/src/utils/api.ts +++ b/extensions/typescript-language-features/src/utils/api.ts @@ -32,6 +32,7 @@ export default class API { public static readonly v345 = API.fromSimpleString('3.4.5'); public static readonly v350 = API.fromSimpleString('3.5.0'); public static readonly v380 = API.fromSimpleString('3.8.0'); + public static readonly v381 = API.fromSimpleString('3.8.1'); public static fromVersionString(versionString: string): API { let version = semver.valid(versionString);