Skip to content

Commit

Permalink
Add support for TS trigger characters
Browse files Browse the repository at this point in the history
Fixes #25034
  • Loading branch information
mjbvz committed Apr 30, 2018
1 parent eab96df commit ffb8d04
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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), '@'));

Expand Down
5 changes: 5 additions & 0 deletions extensions/typescript-language-features/src/utils/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
}
}

0 comments on commit ffb8d04

Please sign in to comment.