From 0470b391358f9d4582a472717ad244c920e93267 Mon Sep 17 00:00:00 2001 From: Mintu Gogoi <127925465+utnim2@users.noreply.github.com> Date: Sat, 4 May 2024 03:19:13 +0530 Subject: [PATCH] added "KCL: Restart Language Server" command to restart the KCL language server (#43) --- package.json | 9 ++++++++- src/extension.ts | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 68b8c85..36f2135 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "activationEvents": [ "onLanguage:KCL", "onLanguage:YAML", - "onLanguage:MOD" + "onLanguage:MOD", + "onCommand:kcl.restartLanguageServer" ], "main": "./out/extension.js", "scripts": { @@ -42,6 +43,12 @@ "typescript": "^4.7.2" }, "contributes": { + "commands": [ + { + "command": "kcl.restartLanguageServer", + "title": "KCL: Restart Language Server" + } + ], "type": "object", "title": "KCL configuration", "properties": { diff --git a/src/extension.ts b/src/extension.ts index fbcc530..73c3c19 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -15,6 +15,7 @@ import { let client: LanguageClient; export async function activate(context: vscode.ExtensionContext) { + console.log('KCL extension activated'); const autoCompletionProvider = vscode.languages.registerCompletionItemProvider('KCL', { provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) { return autoCompletionItems(); @@ -28,7 +29,11 @@ export async function activate(context: vscode.ExtensionContext) { // } // }); + const restartLanguageServerCommand = vscode.commands.registerCommand('kcl.restartLanguageServer', restartLanguageServer, "KCL: Restart Language Server"); + console.log('KCL: Restart Language Server command registered'); + context.subscriptions.push(autoCompletionProvider); + context.subscriptions.push(restartLanguageServerCommand); const language_server_path: string | undefined = install.kcl_rust_lsp_location(); // if (!language_server_path) { @@ -88,6 +93,17 @@ function startLanguageServerWith(language_server_path: string) { install.outputMsg(`${install.KCL_LANGUAGE_SERVER} started!`); } +function restartLanguageServer() { + if (client) { + client.stop().then(() => { + const language_server_path = install.kcl_rust_lsp_location(); + if (language_server_path) { + startLanguageServerWith(language_server_path); + } + }); + } +} + function autoCompletionItems(): vscode.CompletionItem[] { const snippetCompletions: {label: string, text: string}[] = [ {label: 'import as', text: 'import ${1:path} as ${2:alias}'},