Autoshow suggestions for jsdoc param

Fixes #34853
This commit is contained in:
Matt Bierner
2017-09-22 12:51:49 -07:00
parent 5ff6747e4d
commit 65b9a0de2d
2 changed files with 10 additions and 2 deletions

View File

@@ -190,13 +190,21 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP
}
if (context.triggerCharacter === '/') {
// make sure we are in something that looks line an import path
// make sure we are in something that looks like an import path
const line = document.lineAt(position.line).text.slice(0, position.character);
if (!line.match(/^import .+? from\s*["'][^'"]*$/) && !line.match(/\b(import|require)\(['"][^'"]*$/)) {
return Promise.resolve<CompletionItem[]>([]);
}
}
if (context.triggerCharacter === '@') {
// make sure we are in something that looks like the start of a jsdoc comment
const line = document.lineAt(position.line).text.slice(0, position.character);
if (!line.match(/^\s*\*[ ]?@/) && !line.match(/\/\*\*+[ ]?@/)) {
return Promise.resolve<CompletionItem[]>([]);
}
}
const args: CompletionsRequestArgs = vsPositionToTsFileLocation(file, position);
return this.client.execute('completions', args, token).then((msg) => {
// This info has to come from the tsserver. See https://github.com/Microsoft/TypeScript/issues/2831

View File

@@ -242,7 +242,7 @@ class LanguageProvider {
const completionItemProvider = new (await import('./features/completionItemProvider')).default(client, this.typingsStatus);
completionItemProvider.updateConfiguration();
this.toUpdateOnConfigurationChanged.push(completionItemProvider);
this.disposables.push(languages.registerCompletionItemProvider(selector, completionItemProvider, '.', '"', '\'', '/'));
this.disposables.push(languages.registerCompletionItemProvider(selector, completionItemProvider, '.', '"', '\'', '/', '@'));
this.disposables.push(languages.registerCompletionItemProvider(selector, new (await import('./features/directiveCommentCompletionProvider')).default(client), '@'));