import * as path from 'path'; import { ExtensionContext } from 'vscode'; import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from 'vscode-languageclient/node'; let client: LanguageClient; export function activate(context: ExtensionContext) { // The server is implemented in node const serverModule = context.asAbsolutePath(path.join('out', 'server.js')); // Server options - run the server in Node const serverOptions: ServerOptions = { run: { module: serverModule, transport: TransportKind.ipc }, debug: { module: serverModule, transport: TransportKind.ipc, options: { execArgv: ['--nolazy', '--inspect=6009'] } } }; // Options to control the language client const clientOptions: LanguageClientOptions = { // Register the server for EFTL documents documentSelector: [{ scheme: 'file', language: 'eftl' }] }; // Create the language client and start the client client = new LanguageClient( 'eftlLanguageServer', 'EFTL Language Server', serverOptions, clientOptions ); // Start the client. This will also launch the server client.start(); } export function deactivate(): Thenable | undefined { if (!client) { return undefined; } return client.stop(); }