Руководство по написанию LSP Client - PullRequest
1 голос
/ 23 марта 2019

У меня есть личный редактор, который реализует свой собственный «протокол» для завершения кода и хотел бы переключиться на протокол языкового сервера, чтобы избавить себя от некоторого бремени разработки.Однако я не смог полностью понять документацию LSP , касающуюся реализации клиента.Он перепутан с реализацией сервера и не может найти четкую разницу между ними.

Большая часть онлайн-документации (включая вопросы по SO) вращается вокруг расширений VSCode, о которых я ничего не знаю и не помогаю.

Буду признателен за помощь в написании простого клиента, который просто запрашивает автозаполнение.Я пишу свой редактор на C ++ и буду признателен за любой урок, который объясняет, как создать клиент.Я понимаю языки Python, C, C #, Pure JavaScript, C ++, PHP и подобные, поэтому я могу легко следовать любому учебнику на этих языках.

Если что-то не понятно, дайте мне знать, чтобы я мог объяснить (это мой первый пост в LSP :))

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Я успешно написал клиента, который получает результаты выполнения от сервера. Вот (примерно), что он делает:

  • отправить initialize
  • отправить textDocument/didOpen

На этом этапе ваш сервер должен быть готов ответить на запрос textDocument/completion. В зависимости от ответа вам также может понадобиться использовать completionItem/resolve. На сегодняшний день мне никогда не требовалось это для серверов, которые я использовал.

Удачи!

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

Мэтти, конечно, ведет меня в правильном направлении.Самым сложным было для меня понять запрос / ответ.У LSP есть очень полезная страница на эту тему с неудачным именем (ИМХО), которая ввела меня в заблуждение, "осмотр".Это хороший пример запроса / ответа.

...