From d6d8c7d8654839c2094eca2a749472142c5dd452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=80=E8=90=8C=E5=B0=8F=E6=B1=90?= <sumneko@hotmail.com> Date: Tue, 20 Sep 2022 14:44:51 +0800 Subject: [PATCH] add support for `Lua.misc.executablePath` --- client/out/languageserver.js | 28 ++++++++++++++------- client/src/languageserver.ts | 49 +++++++++++++++++++++--------------- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/client/out/languageserver.js b/client/out/languageserver.js index 6c7429c..15fc874 100644 --- a/client/out/languageserver.js +++ b/client/out/languageserver.js @@ -67,6 +67,24 @@ class LuaClient { }; let config = vscode_1.workspace.getConfiguration(undefined, (_a = vscode.workspace.workspaceFolders) === null || _a === void 0 ? void 0 : _a[0]); let commandParam = config.get("Lua.misc.parameters"); + let command = yield this.getCommand(config); + let serverOptions = { + command: command, + args: commandParam, + }; + this.client = new node_1.LanguageClient('Lua', 'Lua', serverOptions, clientOptions); + //client.registerProposedFeatures(); + yield this.client.start(); + this.onCommand(); + this.statusBar(); + }); + } + getCommand(config) { + return __awaiter(this, void 0, void 0, function* () { + let executablePath = config.get("Lua.misc.executablePath"); + if (executablePath && executablePath != "") { + return executablePath; + } let command; let platform = os.platform(); let binDir; @@ -86,15 +104,7 @@ class LuaClient { yield fs.promises.chmod(command, '777'); break; } - let serverOptions = { - command: command, - args: commandParam, - }; - this.client = new node_1.LanguageClient('Lua', 'Lua', serverOptions, clientOptions); - //client.registerProposedFeatures(); - yield this.client.start(); - this.onCommand(); - this.statusBar(); + return command; }); } stop() { diff --git a/client/src/languageserver.ts b/client/src/languageserver.ts index 5d11ecf..cf31da0 100644 --- a/client/src/languageserver.ts +++ b/client/src/languageserver.ts @@ -72,6 +72,31 @@ class LuaClient { let config = Workspace.getConfiguration(undefined, vscode.workspace.workspaceFolders?.[0]); let commandParam: string[] = config.get("Lua.misc.parameters"); + let command: string = await this.getCommand(config); + + let serverOptions: ServerOptions = { + command: command, + args: commandParam, + }; + + this.client = new LanguageClient( + 'Lua', + 'Lua', + serverOptions, + clientOptions + ); + + //client.registerProposedFeatures(); + await this.client.start(); + this.onCommand(); + this.statusBar(); + } + + private async getCommand(config: vscode.WorkspaceConfiguration) { + let executablePath: string = config.get("Lua.misc.executablePath"); + if (executablePath && executablePath != "") { + return executablePath; + } let command: string; let platform: string = os.platform(); let binDir: string; @@ -96,7 +121,7 @@ class LuaClient { 'lua-language-server' ) ); - await fs.promises.chmod(command, '777') + await fs.promises.chmod(command, '777'); break; case "darwin": command = this.context.asAbsolutePath( @@ -106,28 +131,12 @@ class LuaClient { 'lua-language-server' ) ); - await fs.promises.chmod(command, '777') + await fs.promises.chmod(command, '777'); break; } - - let serverOptions: ServerOptions = { - command: command, - args: commandParam, - }; - - this.client = new LanguageClient( - 'Lua', - 'Lua', - serverOptions, - clientOptions - ); - - //client.registerProposedFeatures(); - await this.client.start(); - this.onCommand(); - this.statusBar(); + return command; } - + async stop() { this.client.stop(); for (const disposable of this.disposables) { -- GitLab