Краткое руководство по внедрению поддержки RLS в ваш любимый редактор.
В большинстве случаев вам потребуется реализовать расширение или плагин в формате и языке, которые требуются вашим редактором. Существует два основных случая — когда уже есть поддержка LSP и когда её нет. В первом случае внедрение намного проще, к счастью, многие редакторы теперь поддерживают LSP как нативно, так и с помощью расширений.
Если поддержка LSP уже существует, вы можете получить довольно хорошую "из коробки" работу с RLS — вы получите ключевые функции, такие как автозавершение кода и переименование. Однако это недостаточное пользовательское решение. Сравнивая с полной поддержкой в редакторе, вы теряете:
Проверьте отслеживаемый вопрос, чтобы узнать, существует ли уже поддержка или находится в разработке. Если нет, оставьте комментарий там, чтобы сообщить нам о начале работы. Если вы хотите, откройте вопрос, посвящённый вашему редактору, если он ещё не существует. Вы должны ознакомиться с вопросами с меткой clients.
Если есть вещи, которые можно исправить на стороне RLS, пожалуйста, отправьте PR или откройте вопрос.
Найдите информацию о экосистеме расширений вашего редактора — свяжитесь с сообществом, узнайте, есть ли поддержка LSP, найдите каналы поддержки и т.д.
Если ваш редактор поддерживает LSP, то запуск и настройка довольно просты. Вам нужно способом запустить RLS и указать редактору, чтобы его клиент LSP подключался к нему. Надеюсь, что это всего лишь несколько строк кода. Следующим шагом является обеспечение перезапуска RLS после сбоя — клиент LSP может или может не делать это автоматически (VSCode будет делать это пять раз перед остановкой). После того как базовая поддержка будет введена, начинается тяжелая работа:* Реализация расширений протокола
workspace/didChangeConfiguration
, когда меняется конфигурация.rls
), и если нет, устанавливать его и компоненты rust-analysis
и rust-src
Если ваш редактор не имеет существующей поддержки LSP, вам потребуется выполнить все вышеуказанное плюс реализовать (части) LSP. Это значительная работа, но, вероятно, не так ужасна, как кажется. LSP — это довольно простой протокол JSON через stdio. Интересная часть — это привязка клиентской части протокола к функциональности вашего редактора.
RLS в настоящее время требует поддержки следующих сообщений. Обратите внимание, что мы часто используем далеко не все опции, поэтому даже с этим подмножеством вам не нужно реализовывать все.
Уведомления:
exit
initialized
textDocument/didOpen
textDocument/didChange
textDocument/didSave
workspace/didChangeConfiguration
workspace/didChangeWatchedFiles
cancel
Запросы:
shutdown
initialize
textDocument/definition
textDocument/references
textDocument/completion
completionItem/resolve
textDocument/rename
textDocument/documentHighlight
workspace/executeCommand
textDocument/codeAction
textDocument/documentSymbol
textDocument/formatting
textDocument/rangeFormatting
textDocument/hover
workspace/symbol
Со сервера на клиент:
workspace/applyEdit
client/registerCapability
client/unregisterCapability
RLS также использует некоторые персонализированные сообщения.
Мы готовы помочь вам любым способом. Лучший способ получить помощь — оставить комментарий к задаче в этом репозитории или связаться со мной (nrc) в #rust-dev-tools на IRC.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )