diff options
| author | HO-COOH <42881734+HO-COOH@users.noreply.github.com> | 2021-05-17 21:21:46 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-17 15:21:46 +0200 |
| commit | 327f8a8c12c0981ad5b31cf7dfde636e3fa43a9a (patch) | |
| tree | 3ce9fde1f2d0bfcf31eb93794ea63940f768a83b | |
| parent | 57b20882140ea56b2c67fa43f345af114041f027 (diff) | |
| download | doxdocgen-327f8a8c12c0981ad5b31cf7dfde636e3fa43a9a.tar.gz | |
Add comment detection in providing doxygen command (#229)
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | package.json | 5 | ||||
| -rw-r--r-- | src/DoxygenCompletionItemProvider.ts | 15 | ||||
| -rw-r--r-- | src/util.ts | 5 |
4 files changed, 24 insertions, 7 deletions
@@ -234,6 +234,12 @@ Each of them can be configured with its own custom text and you can decide if th // Substitute {email} with git config --get user.email. "doxdocgen.generic.useGitUserEmail": false + + // Provide intellisense and snippet for doxygen commands + "doxdocgen.generic.commandSuggestion": true + + // Add `\\` in doxygen command suggestion for better readbility (need to enable commandSuggestion) + "doxdocgen.generic.commandSuggestionAddPrefix": false ``` ## Contributors diff --git a/package.json b/package.json index e24e723..d30bd48 100644 --- a/package.json +++ b/package.json @@ -240,6 +240,11 @@ "description": "Provide intellisense and snippet for doxygen commands", "type": "boolean", "default": true + }, + "doxdocgen.generic.commandSuggestionAddPrefix": { + "markdownDescription": "Add `\\` in doxygen command suggestion for better readbility (need to enable commandSuggestion)", + "type": "boolean", + "default": false } } } diff --git a/src/DoxygenCompletionItemProvider.ts b/src/DoxygenCompletionItemProvider.ts index b71b827..160158c 100644 --- a/src/DoxygenCompletionItemProvider.ts +++ b/src/DoxygenCompletionItemProvider.ts @@ -1,4 +1,5 @@ import * as vscode from "vscode"; +import { inComment } from "./util"; // tslint:disable:max-line-length @@ -115,8 +116,10 @@ export default class DoxygenCompletionItemProvider implements vscode.CompletionI ]; public static completionItems = (() => { const items: vscode.CompletionItem[] = []; + const addPrefix = vscode.workspace.getConfiguration("doxdocgen.generic").get<boolean>("commandSuggestionAddPrefix"); for (const item of DoxygenCompletionItemProvider.commands) { - const newItem = new vscode.CompletionItem(item[0]); + // TODO: Only \ can be used, @ as label prefix causes unexpected filtering + const newItem = new vscode.CompletionItem(addPrefix ? `\\${item[0]}` : item[0]); newItem.documentation = new vscode.MarkdownString(item[2]); newItem.insertText = new vscode.SnippetString(`${item[0]} ${item[1]}`); newItem.kind = vscode.CompletionItemKind.Snippet; @@ -128,10 +131,12 @@ export default class DoxygenCompletionItemProvider implements vscode.CompletionI public trigger: string = ""; public indentSpace: number; public provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) { - this.trigger = context.triggerCharacter; - this.indentSpace = position.character; - // TODO: check if current position is comment - return DoxygenCompletionItemProvider.completionItems; + if (inComment(vscode.window.activeTextEditor, position.line + 1)) { + this.trigger = context.triggerCharacter; + this.indentSpace = position.character; + return DoxygenCompletionItemProvider.completionItems; + } + return []; } public resolveCompletionItem(item: vscode.CompletionItem, token: vscode.CancellationToken) { diff --git a/src/util.ts b/src/util.ts index f2068e7..f6e429a 100644 --- a/src/util.ts +++ b/src/util.ts @@ -2,9 +2,10 @@ import * as env from "env-var"; import * as vscode from "vscode"; /** - * Check if a specific line is inside a comment block + * Check if a specific line will be inside a comment block if comment block is inserted, + * that is a line before the active line * @param activeEditor the active editor - * @param activeLine the line number to be checked + * @param activeLine the !previous! line to be checked */ export function inComment(activeEditor: vscode.TextEditor, activeLine: number): boolean { if (activeLine === 0) { |