Ctrl K
ComunidadGuías…

translations/LSP_RU.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Протокол языкового сервера 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`

## Возможности

- **Диагностика**: Ошибки синтаксиса и типов в реальном времени.
- **Переход к определению**: Переход к определениям структур, функций и переменных.
- **Автодополнение**: Контекстно-зависимые предложения для полей и методов.
- **Наведение**: Информация о типе и документация при наведении курсора.