Use completion item to trigger jsdoc item

This commit is contained in:
Matt Bierner 2017-02-23 11:43:53 -08:00
parent d967515b64
commit 4ae550eb54
2 changed files with 2 additions and 35 deletions

View file

@ -35,25 +35,6 @@ export default class JsDocCompletionHelper implements CompletionItemProvider {
constructor(
private client: ITypescriptServiceClient,
) {
window.onDidChangeTextEditorSelection(e => {
if (e.textEditor.document.languageId !== 'typescript'
&& e.textEditor.document.languageId !== 'typescriptreact'
&& e.textEditor.document.languageId !== 'javascript'
&& e.textEditor.document.languageId !== 'javascriptreact'
) {
return;
}
const selection = e.selections[0];
if (!selection.start.isEqual(selection.end)) {
return;
}
if (this.shouldAutoShowJsDocSuggestion(e.textEditor.document, selection.start)) {
return commands.executeCommand('editor.action.triggerSuggest');
}
return;
});
commands.registerCommand(
tryCompleteJsDocCommand,
(file: Uri, position: Position) => this.tryCompleteJsDoc(file, position));
@ -69,7 +50,7 @@ export default class JsDocCompletionHelper implements CompletionItemProvider {
// or could be the opening of a comment
const line = document.lineAt(position.line).text;
const prefix = line.slice(0, position.character);
if (prefix.match(/\/\*+\s*$/) || prefix.match(/^\s*\/?\**\s*$/)) {
if (prefix.match(/^\s*$|\/\*\*\s*$|^\s*\/\*\*+\s*$/)) {
return [new JsDocCompletionItem(document.uri, position)];
}
return [];
@ -79,20 +60,6 @@ export default class JsDocCompletionHelper implements CompletionItemProvider {
return item;
}
private shouldAutoShowJsDocSuggestion(document: TextDocument, position: Position): boolean {
const line = document.lineAt(position.line).text;
// Ensure line starts with '/**' then cursor
const prefix = line.slice(0, position.character).match(/^\s*(\/\*\*+)$/);
if (prefix === null) {
return false;
}
// Ensure there is no content after the cursor besides the end of the comment
const suffix = line.slice(position.character).match(/^\s*\*+\/$/);
return suffix !== null;
}
/**
* Try to insert a jsdoc comment, using a template provide by typescript
* if possible, otherwise falling back to a default comment format.

View file

@ -104,7 +104,7 @@ export function activate(context: ExtensionContext): void {
}));
context.subscriptions.push(
languages.registerCompletionItemProvider(selector, new JsDocCompletionHelper(client)));
languages.registerCompletionItemProvider(selector, new JsDocCompletionHelper(client), '*'));
const goToProjectConfig = (isTypeScript: boolean) => {
const editor = window.activeTextEditor;