Языковой сервер: как включить события "onDidOpenTextDocument" - PullRequest
0 голосов
/ 07 марта 2019

Я разрабатываю языковой сервер (и клиент) для кода VS на основе официального "lsp-sample" . Согласно документации ( Руководство по расширению языкового сервера ), установка возможности textDocumentSync: TextDocumentSyncKind.Incremental должна позволить языковому серверу получать события onDidOpenTextDocument, onDidChangeTextDocument и onDidCloseTextDocument.

Однако VS-код не передает эти события на языковой сервер, и точки останова в обработчиках событий (например, в этой строке ) не достигаются (точки останова в других обработчиках событий ударил, так что отладка языкового сервера работает ).

Что может быть неправильным в конфигурациях клиента или сервера, которые могут помешать VS Code отправлять эти события?

1 Ответ

0 голосов
/ 26 марта 2019

После многих отладок языкового клиента я обнаружил проблему: при запуске мой языковой сервер печатает что-то на стандартный вывод, чтобы указать, что он готов. Поскольку языковой сервер обменивается данными через stdout / stdin, VS Code (правильно) интерпретирует это как нарушение протокола, из-за чего все это не запускается правильно. Удаление оператора печати решило проблему.

Удивительно, но плагин LSP в Sublime Text, по-видимому, игнорировал это нарушение протокола и продолжал функционировать, несмотря на мою некорректную реализацию языкового сервера.

...