Files
kerolox/vscode-ext/src/extension.ts
2026-04-15 08:37:09 -06:00

31 lines
1.0 KiB
TypeScript

import { LanguageServer } from "kerolox-lsp";
import { Readable, Writable } from "stream";
import * as vscode from "vscode";
import { LanguageClient, LanguageClientOptions, ServerOptions } from "vscode-languageclient/node";
export async function activate(context: vscode.ExtensionContext) {
const server = launchLsp();
const clientOptions: LanguageClientOptions = {
documentSelector: [{ scheme: "file", language: "kerolox" }]
};
const client = new LanguageClient("kerolox", server, clientOptions, true);
await client.start();
const dispose = async () => await client.stop();
context.subscriptions.push({ dispose });
}
export function launchLsp(): ServerOptions {
return async () => {
console.log("creating language server");
const server = new LanguageServer();
console.log("language server created");
const writer = Writable.fromWeb(server.requests);
const reader = Readable.fromWeb(server.responses);
console.log("language server bound");
return { server, writer, reader };
};
}