mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 04:49:35 +00:00
Use completion item to trigger jsdoc item
This commit is contained in:
parent
d967515b64
commit
4ae550eb54
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue