LSP-client-example

Форк
0
54 строки · 1.6 Кб
1
import * as vscode from "vscode";
2
import { workspace, ExtensionContext } from 'vscode';
3
import * as net from 'net';
4
import {
5
	LanguageClient,
6
	LanguageClientOptions,
7
	StreamInfo
8
} from 'vscode-languageclient/node';
9

10
let client: LanguageClient;
11

12
export function activate(context: ExtensionContext) {
13
	const config = vscode.workspace.getConfiguration();
14
	const serverPort: string = config.get("serverPort"); // Получаем порт из настроек окружения vscode
15
	vscode.window.showInformationMessage(`Starting LSP client on port: ` + serverPort);  // Отправим пользователю информацию о запуске расширения
16

17

18
	const connectionInfo = {
19
        port: Number(serverPort),
20
		host: "localhost"
21
    };
22
    const serverOptions = () => {
23
        // Подключение по сокету
24
        const socket = net.connect(connectionInfo);
25
        const result: StreamInfo = {
26
            writer: socket,
27
            reader: socket
28
        };
29
        return Promise.resolve(result);
30
    };
31

32
	const clientOptions: LanguageClientOptions = {
33
		documentSelector: [{ scheme: 'file', language: 'yaml' }], // Указаваем расширение файлов, с которыми поддерживаем работу
34
		synchronize: {
35
			fileEvents: workspace.createFileSystemWatcher('**/.clientrc')
36
		}
37
	};
38

39
	client = new LanguageClient(
40
		'languageServerExample',
41
		'Language Server Example',
42
		serverOptions,
43
		clientOptions
44
	);
45

46
	client.start();
47
}
48

49
export function deactivate(): Thenable<void> | undefined {
50
	if (!client) {
51
		return undefined;
52
	}
53
	return client.stop();
54
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.