From 63222bebe64a9829c7196b85dd5f92df379393d5 Mon Sep 17 00:00:00 2001 From: christoph_xd Date: Wed, 8 Jan 2025 07:33:58 +0100 Subject: [PATCH] add autocomp --- CHANGELOG.md | 6 +++++- client/src/common/handlers.ts | 21 +++++++++++++++++++++ client/src/extension.ts | 18 +++++++++++++++++- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36a63f7..682f144 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ -## [1.0.0] +## [0.0.1] - Initial release + +## [0.0.2] + +- Add Autocomp for TYPE diff --git a/client/src/common/handlers.ts b/client/src/common/handlers.ts index 662ab6d..059c60e 100644 --- a/client/src/common/handlers.ts +++ b/client/src/common/handlers.ts @@ -1,3 +1,5 @@ +import * as vscode from "vscode"; + export function formatCdlFile(content: string): string { let indentLevel = 0; const formattedLines = []; @@ -13,3 +15,22 @@ export function formatCdlFile(content: string): string { } return formattedLines.join("\n"); } + +export function completionHandler( + document: vscode.TextDocument, + position: vscode.Position +) { + const linePrefix = document + .lineAt(position) + .text.substr(0, position.character); + if (!linePrefix.endsWith("TYPE ")) { + return undefined; + } + + return [ + new vscode.CompletionItem("o", vscode.CompletionItemKind.Keyword), + new vscode.CompletionItem("b", vscode.CompletionItemKind.Keyword), + new vscode.CompletionItem("i", vscode.CompletionItemKind.Keyword), + new vscode.CompletionItem("d", vscode.CompletionItemKind.Keyword), + ]; +} diff --git a/client/src/extension.ts b/client/src/extension.ts index bc0a821..1f7b3a4 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -1,5 +1,5 @@ import * as vscode from "vscode"; -import { formatCdlFile } from "./common/handlers"; +import { formatCdlFile, completionHandler } from "./common/handlers"; export function activate(context: vscode.ExtensionContext) { const disposable = vscode.languages.registerDocumentFormattingEditProvider( @@ -20,6 +20,22 @@ export function activate(context: vscode.ExtensionContext) { ); context.subscriptions.push(disposable); + + const completionProvider = vscode.languages.registerCompletionItemProvider( + { scheme: "file", language: "cdl" }, + { + provideCompletionItems( + document: vscode.TextDocument, + position: vscode.Position, + token: vscode.CancellationToken, + context: vscode.CompletionContext + ) { + return completionHandler(document, position); + }, + }, + " " // Trigger completion on space + ); + context.subscriptions.push(completionProvider); } export function deactivate() {}