diff --git a/reid-lsp/.gitignore b/reid-lsp/.gitignore index 68b46e6..1b01508 100644 --- a/reid-lsp/.gitignore +++ b/reid-lsp/.gitignore @@ -3,4 +3,5 @@ node_modules dist package-lock.json pnpm-lock.yaml -tsconfig.tsbuildinfo \ No newline at end of file +tsconfig.tsbuildinfo +*.vsix \ No newline at end of file diff --git a/reid-lsp/client/src/extension.ts b/reid-lsp/client/src/extension.ts index 69d4ca5..b737317 100644 --- a/reid-lsp/client/src/extension.ts +++ b/reid-lsp/client/src/extension.ts @@ -18,12 +18,20 @@ import { let client: LanguageClient; export function activate(context: ExtensionContext) { - const traceOutputChannel = window.createOutputChannel("Reid Language Server trace"); - const command = process.env.SERVER_PATH || "reid-language-server"; - + const configuration = workspace.getConfiguration('reid-language-server'); + let server_path: string = process.env.SERVER_PATH ?? configuration.get("language-server-path") ?? 'reid-language-server'; + const regex = /\$(\w+)/; + while (regex.test(server_path)) { + let envVar = regex.exec(server_path)?.[1]; + const envVal = envVar ? process.env[envVar] : undefined; + if (envVar === undefined || envVal === undefined) { + console.error(`No such environment variables as ${envVar}`); + } + server_path = server_path.replaceAll(`$${envVar}`, envVal ?? ''); + } const run: Executable = { - command, + command: server_path, options: { env: { ...process.env, @@ -49,11 +57,15 @@ export function activate(context: ExtensionContext) { // Create the language client and start the client. client = new LanguageClient( - 'reid-lsp', + 'reid-language-server', 'Reid Language Server', serverOptions, clientOptions ); + client.info(JSON.stringify(server_path)); + + client.info(`Loaded Reid Language Server from ${server_path}`); + workspace.onDidOpenTextDocument((e) => { }); diff --git a/reid-lsp/package.json b/reid-lsp/package.json index a32bb3c..dea5a57 100644 --- a/reid-lsp/package.json +++ b/reid-lsp/package.json @@ -1,5 +1,5 @@ { - "name": "reid-lsp", + "name": "reid-language-server", "displayName": "Reid Language Server", "description": "Language Server Extension for Reid", "version": "0.1.0", @@ -32,21 +32,11 @@ "type": "object", "title": "reid-language-server", "properties": { - "nrs-language-server.trace.server": { + "reid-language-server.language-server-path": { "type": "string", "scope": "window", - "enum": [ - "off", - "messages", - "verbose" - ], - "enumDescriptions": [ - "No traces", - "Error only", - "Full log" - ], - "default": "off", - "description": "Traces the communication between VS Code and the language server." + "default": "$HOME/.cargo/bin/reid-lsp", + "description": "Path to the Reid Language Server executable" } } },