Skip to content

Commit 24601e3

Browse files
committed
Update extension.ts
1 parent 51fb55c commit 24601e3

File tree

3 files changed

+35
-21
lines changed

3 files changed

+35
-21
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "vscode-erg",
44
"description": "Erg language support for Visual Studio Code",
55
"publisher": "erg-lang",
6-
"version": "0.1.6",
6+
"version": "0.1.7",
77
"engines": {
88
"vscode": "^1.70.0"
99
},

src/extension.ts

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,42 @@
11
// import { LanguageClientOptions } from "vscode-languageclient";
22
import { ExtensionContext, window } from "vscode";
33
import { LanguageClient, ServerOptions } from "vscode-languageclient/node";
4+
import { spawnSync } from "child_process";
45

56
let client: LanguageClient | undefined;
67

8+
export async function activate_els(context: ExtensionContext) {
9+
let serverOptions;
10+
let result = spawnSync("erg", ["--build-features"]);
11+
if (result.stdout.toString().includes("els")) {
12+
serverOptions = {
13+
command: "erg",
14+
args: ["--language-server"]
15+
};
16+
} else {
17+
serverOptions = {
18+
command: "els",
19+
args: []
20+
};
21+
}
22+
const clientOptions = {
23+
documentSelector: [
24+
{
25+
scheme: "file",
26+
language: "erg",
27+
}
28+
],
29+
};
30+
client = new LanguageClient("els", serverOptions, clientOptions);
31+
context.subscriptions.push(client.start());
32+
}
33+
734
export async function activate(context: ExtensionContext) {
8-
try {
9-
const serverOptions = {
10-
command: "els",
11-
args: [],
12-
}; // satisfies ServerOptions;
13-
const clientOptions = {
14-
documentSelector: [
15-
{
16-
scheme: "file",
17-
language: "erg",
18-
},
19-
],
20-
}; // satisfies LanguageClientOptions;
21-
client = new LanguageClient("els", serverOptions, clientOptions);
22-
context.subscriptions.push(client.start());
23-
} catch (e) {
24-
window.showErrorMessage("failed to start els.");
25-
}
35+
try {
36+
activate_els(context);
37+
} catch (e) {
38+
window.showErrorMessage("Failed to start ELS (Erg Language Server). Please make sure you have erg (built with `els` feature) or els installed.");
39+
}
2640
}
2741

2842
export function deactivate() {

0 commit comments

Comments
 (0)