LSP-client-example
54 строки · 1.6 Кб
1import * as vscode from "vscode";2import { workspace, ExtensionContext } from 'vscode';3import * as net from 'net';4import {5LanguageClient,6LanguageClientOptions,7StreamInfo
8} from 'vscode-languageclient/node';9
10let client: LanguageClient;11
12export function activate(context: ExtensionContext) {13const config = vscode.workspace.getConfiguration();14const serverPort: string = config.get("serverPort"); // Получаем порт из настроек окружения vscode15vscode.window.showInformationMessage(`Starting LSP client on port: ` + serverPort); // Отправим пользователю информацию о запуске расширения16
17
18const connectionInfo = {19port: Number(serverPort),20host: "localhost"21};22const serverOptions = () => {23// Подключение по сокету24const socket = net.connect(connectionInfo);25const result: StreamInfo = {26writer: socket,27reader: socket28};29return Promise.resolve(result);30};31
32const clientOptions: LanguageClientOptions = {33documentSelector: [{ scheme: 'file', language: 'yaml' }], // Указаваем расширение файлов, с которыми поддерживаем работу34synchronize: {35fileEvents: workspace.createFileSystemWatcher('**/.clientrc')36}37};38
39client = new LanguageClient(40'languageServerExample',41'Language Server Example',42serverOptions,43clientOptions
44);45
46client.start();47}
48
49export function deactivate(): Thenable<void> | undefined {50if (!client) {51return undefined;52}53return client.stop();54}