translations/LSP_RU.md
Rama main · réplica de lectura del repositorio original.
# Протокол языкового сервера Zen C (LSP)
Zen C поставляется со встроенным языковым сервером (LSP), который предоставляет функции редактора, такие как автодополнение, переход к определению и диагностика ошибок.
## Запуск сервера
Языковой сервер встроен в компилятор `zc`. Вы можете запустить его вручную (хотя ваш редактор обычно делает это сам) с помощью:
```bash
zc lsp
```
Он общается через стандартный ввод/вывод (stdio).
## Настройка редактора
### VS Code
Для Visual Studio Code используйте официальное расширение Zen C:
- **Репозиторий**: [zenc-lang/vscode-zenc](https://github.com/zenc-lang/vscode-zenc)
Установите расширение прямо из **[Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Z-libs.zenc)**.
Кроме того, вы можете собрать `.vsix` из исходного кода.
### Vim / Neovim
Поддержка Vim и Neovim обеспечивается через плагин `zenc.vim`, который включает подсветку синтаксиса и помощники по настройке LSP.
- **Репозиторий**: [zenc-lang/zenc.vim](https://github.com/zenc-lang/zenc.vim)
#### Neovim (пример с `lazy.nvim`)
Если вы используете `nvim-lspconfig`, вы можете зарегистрировать `zc` как пользовательский сервер:
```lua
local lspconfig = require('lspconfig')
local configs = require('lspconfig.configs')
if not configs.zenc then
configs.zenc = {
default_config = {
cmd = { 'zc', 'lsp' },
filetypes = { 'zenc', 'zc' },
root_dir = lspconfig.util.root_pattern('.git', 'build.bat', 'Makefile'),
settings = {},
},
}
end
lspconfig.zenc.setup {}
```
### Zed
Чтобы настроить Zen C в Zed, добавьте следующее в ваш `settings.json` или конфигурацию языка:
```json
{
"lsp": {
"zenc": {
"binary": {
"path": "zc",
"arguments": ["lsp"]
}
}
},
"languages": {
"Zen C": {
"language_servers": ["zenc"]
}
}
}
```
### Универсальные редакторы (Sublime, Emacs и т.д.)
Для любого редактора, поддерживающего универсальные клиенты LSP:
1. **Команда**: `zc`
2. **Аргументы**: `lsp`
3. **Транспорт**: `stdio`
4. **Расширения файлов**: `.zc`
## Возможности
- **Диагностика**: Ошибки синтаксиса и типов в реальном времени.
- **Переход к определению**: Переход к определениям структур, функций и переменных.
- **Автодополнение**: Контекстно-зависимые предложения для полей и методов.
- **Наведение**: Информация о типе и документация при наведении курсора.