Могу ли я проверить свой сервер LSP без написания расширения?

Я пишу сервер Language Server Protocol (LSP) для использования с neovim, и я хотел бы проверить его на VSCode, чтобы убедиться, что я правильно понял все детали и что я случайно не кодирую какие-либо neovim-isms в мою реализацию.

Текущие документы предлагают мне написать расширение VSCode, которое будет действовать как клиент для моего сервера, но я не очень заинтересован в том, чтобы вкладывать столько усилий в платформу, которую я не буду использовать.

В neovim я могу просто определить команду CLI и тип файла, которому она соответствует, и нажать go:

let g:LanguageClient_serverCommands = {
    \ 'rust': ['rustup', 'run', 'nightly', 'rls'],
    \ 'javascript': ['/opt/javascript-typescript-langserver/lib/language-server-stdio.js'],
    \ }

существует ли нечто подобное в коде Visual Studio?

1 ответ

Для написания языкового клиента в VSCode требуется мало усилий, вот как я это сделал:

export function activate(context: vscode.ExtensionContext) {

    // This line of code will only be executed once when your extension is activated

    // TODO: Start server exe and communicate with it
    let serverExe = <Path_to_server>;

    let ServerOptions: ServerOptions = {
        run: {command: serverExe, args:['-lsp']},
        debug: {command: serverExe, args:['-lsp']}
    }

    let clientOptions: LanguageClientOptions = {
        // Register the server for plain text documents
        documentSelector: [
            {
                pattern: '**/*.txt',
            }
        ],

    }

    let lspClient = new LanguageClient("Hello LSP", ServerOptions, clientOptions);

    // For debugging only
    //lspClient.trace = Trace.Verbose;

    //add all disposables here
    context.subscriptions.push(lspClient.start());
}

Как только клиент запускается, он запускает сервер и начинает диалог инициализации, клиент наблюдает за всеми важными событиями в VSCode (документ открыт / закрыт / изменен, Ctrl+ пробел,...) и отправляет нужные запросы / уведомления на сервер

Другие вопросы по тегам