summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHO-COOH <42881734+HO-COOH@users.noreply.github.com>2021-05-17 21:21:46 +0800
committerGitHub <noreply@github.com>2021-05-17 15:21:46 +0200
commit327f8a8c12c0981ad5b31cf7dfde636e3fa43a9a (patch)
tree3ce9fde1f2d0bfcf31eb93794ea63940f768a83b /src
parent57b20882140ea56b2c67fa43f345af114041f027 (diff)
downloaddoxdocgen-327f8a8c12c0981ad5b31cf7dfde636e3fa43a9a.tar.gz
Add comment detection in providing doxygen command (#229)
Diffstat (limited to 'src')
-rw-r--r--src/DoxygenCompletionItemProvider.ts15
-rw-r--r--src/util.ts5
2 files changed, 13 insertions, 7 deletions
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) {