Введение
В этой статье объясняется, как добавить LSP-серверы для Второй пилот CLI. Для получения концептуальной информации о серверах LSP см. AUTOTITLE.
Добавление LSP-сервера для Второй пилот CLI — это двухэтапный процесс:
- Установите программное обеспечение LSP-сервера на ваш локальный компьютер.
- Настройте сервер в конфигурационном файле.
Эти шаги подробно описаны в данной статье.
Установка и настройка LSP-сервера
Вы можете добавить LSP-сервер для определённого языка, следующим образом:
- Использование
lsp-setupнавыка, который автоматизирует процесс. - Ручная установка серверного программного обеспечения и настройка Второй пилот CLI для использования сервера.
Эти два подхода описаны в разделах ниже.
Использование lsp-setup навыка для добавления языкового сервера
Навык lsp-setup из репозитория «Awesome GitHub Copilot» автоматизирует установку и настройку некоторых популярных языков.
-
Зайдите на сайт загрузки «Awesome GitHub Copilot» и найдите «lsp»:
https://awesome-copilot.github.com/skills/?q=lsp. -
Скачайте навык
lsp-setup. -
Распаковайте загруженный
.zipфайл и создайте каталог под названиемlsp-setup. -
Переместите
lsp-setupкаталог в один из следующих вариантов:- Ваш каталог личных навыков:
~/.copilot/skills/. - Каталог навыков проекта:
.github/skills/в репозитории Git.
- Ваш каталог личных навыков:
-
Начните Второй пилот CLI, или, если вы сейчас участвуете в сессии CLI, введите
/skills reload. -
Введите запрос:
Copilot prompt setup lsp
setup lsp -
Следуйте инструкциям на экране, чтобы выбрать язык для нужного сервера, затем выполните дополнительные шаги.
-
Когда процесс завершён, введите,
/lsp reloadчтобы загрузить новый сервер LSP. -
Проверьте, был ли сервер добавлен и работает корректно. См. раздел «Подтверждение доступности LSP-сервера » позже в этой статье.
Ручная установка и настройка LSP-сервера
Установка LSP-сервера для определённого языка обычно включает установку пакета через менеджер пакетов, такой npmкак , gem, или pip.
Чтобы вручную установить LSP-сервер, обратитесь к документации по конкретному языковому серверу, который хотите установить. Ниже приведены примеры команд для установки популярных серверов LSP.
Примечание.
Полезные ресурсы для поиска LSP-серверов для разных языков включают: * Implementations на сайте Майкрософт Language Server Protocol. * Протокол Language Server на сайте Arch Linux.
Внимание
Устанавливайте LSP-серверы только с тех источников, которым доверяете.
Пример команды установки: TypeScript и JavaScript
Если у вас установлен Node.js, вы можете установить typescript-language-server LSP-сервер с помощью следующей команды:
npm install -g typescript typescript-language-server
npm install -g typescript typescript-language-server
`typescript-language-server` LSP-сервер поддерживает как TypeScript, так и JavaScript.
Пример команды установки: Ruby
Если у вас установлен Gem, вы можете установить ruby-lsp LSP-сервер с помощью следующей команды:
gem install ruby-lsp
gem install ruby-lsp
В качестве альтернативы можно установить solargraph LSP-сервер для Ruby с помощью:
gem install solargraph
gem install solargraph
Пример команды установки: Python
Если у вас установлен Node.js, вы можете установить pyright LSP-сервер с помощью следующей команды:
npm install -g pyright
npm install -g pyright
Или, если у вас установлен PIP, вы можете установить python-lsp-server LSP-сервер с помощью:
pip install python-lsp-server
pip install python-lsp-server
Настройка языкового сервера
-
Для настройки сервера LSP добавьте определение сервера в один из двух конфигурационных файлов:
- Пользовательская конфигурация:
~/.copilot/lsp-config.jsonприменима ко всем вашим проектам. - Project конфигурация:
.github/lsp.json, в вашем репозитории, применяется ко всем, кто работает над этим project.
Оба файла используют одинаковый синтаксис JSON:
{ "lspServers": { "SERVER-NAME": { "command": "COMMAND", "args": ["ARG1", "ARG2"], "fileExtensions": { ".EXT": "LANGUAGE-ID" } }, "ANOTHER-SERVER": { ... } } }Некоторые примеры определений серверов для конкретных LSP-серверов приведены позже в этой статье.
- Пользовательская конфигурация:
-
После установки и настройки сервера убедитесь, можно Второй пилот CLI ли им пользоваться. См. ниже раздел «Подтверждение доступности LSP-сервера ».
Поля конфигурации
Каждое определение сервера в конфигурационном файле должно иметь уникальное имя и содержать только буквенно-цифровые символы, подчеркнуть и дефисы.
В каждом определении сервера доступны/обязательны следующие поля:
| Поле | Обязательный | Описание |
|---|---|---|
command |
Да | Команда, используемая для запуска сервера LSP. |
args |
Нет | Аргументы для передачи командованию. |
fileExtensions |
Да | JSON-карта расширений файлов и их соответствующий языковой идентификатор (например, { ".rs": "rust" }). |
env |
Нет | Переменные среды для установки при запуске сервера. Поддержка ${VAR} и ${VAR:-default} синтаксис расширений. |
rootUri |
Нет | Корневой каталог сервера LSP, относительно корня Git. По умолчанию — ".". Полезно для монорепо. Если ваш проект находится в подкаталоге репозитория Git, а не в корне репозитория, установите rootUri путь к этому подкаталогу. |
initializationOptions |
Нет | Пользовательские опции отправляются на сервер при запуске. |
requestTimeoutMs |
Нет | Тайм-аут для серверных запросов составляет миллисекунды (по умолчанию: 90 секунд). |
Пример определения сервера: typescript-language-server LSP-сервер
{
"lspServers": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"fileExtensions": {
".ts": "typescript",
".tsx": "typescriptreact",
".js": "javascript",
".jsx": "javascriptreact",
".mjs": "javascript",
".cjs": "javascript",
".mts": "typescript",
".cts": "typescript"
}
}
}
}
{
"lspServers": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"fileExtensions": {
".ts": "typescript",
".tsx": "typescriptreact",
".js": "javascript",
".jsx": "javascriptreact",
".mjs": "javascript",
".cjs": "javascript",
".mts": "typescript",
".cts": "typescript"
}
}
}
}
Пример определения сервера: ruby-lsp LSP-сервер
{
"lspServers": {
"ruby": {
"command": "ruby-lsp",
"args": [],
"fileExtensions": {
".rb": "ruby",
".rbw": "ruby",
".rake": "ruby",
".gemspec": "ruby"
}
}
}
}
{
"lspServers": {
"ruby": {
"command": "ruby-lsp",
"args": [],
"fileExtensions": {
".rb": "ruby",
".rbw": "ruby",
".rake": "ruby",
".gemspec": "ruby"
}
}
}
}
Пример определения сервера: pyright LSP-сервер для Python
{
"lspServers": {
"python": {
"command": "pyright-langserver",
"args": ["--stdio"],
"fileExtensions": {
".py": "python",
".pyw": "python",
".pyi": "python"
}
}
}
}
{
"lspServers": {
"python": {
"command": "pyright-langserver",
"args": ["--stdio"],
"fileExtensions": {
".py": "python",
".pyw": "python",
".pyi": "python"
}
}
}
}
Управление языковыми серверами с /lsp помощью команды
Вы можете перечислить и управлять своими LSP-серверами в интерактивной CLI-сессии с помощью /lsp команды слэш:
| Команда Slash | Описание |
|---|---|
/lsp или /lsp show | Покажите статус всех настроенных серверов LSP. |
/lsp test SERVER-NAME | Проверьте, правильно ли сервер запускается. |
/lsp reload | Перезагрузите конфигурации LSP с диска. |
/lsp help | Покажите /lsp командную информацию. |
Список доступных серверов LSP
-
В Второй пилот CLI, проверьте, что выбранный вами LSP-сервер доступен с помощью
/lspкоманды slash. Вы увидите такие выводы, как:● LSP Server Status: User-configured servers: • ruby: ruby-lsp (.rb, .rbw, .rake, .gemspec) • omnisharp: omnisharp (.cs) User config: /Users/username/.copilot/lsp-config.json
Подтверждение доступности LSP-сервера
-
После добавления и настройки LSP-сервера запустите (или перезапустите). Второй пилот CLI
-
Используйте команду slash:
/lsp test SERVER-NAMEчтобы проверить, работает ли сервер LSP корректно.Второй пилот CLI попытки запустить временный, автономный экземпляр сервера и сообщает, был ли он успешным или были ли ошибки. В итоге временный серверный процесс останавливается.