Языковой сервер
Языковой сервер
Заголовок раздела «Языковой сервер»Wippy включает встроенный LSP-сервер (Language Server Protocol), предоставляющий функции IDE для Lua-кода. Сервер работает как часть среды выполнения Wippy и подключается к редакторам через TCP или HTTP.
Возможности
Заголовок раздела «Возможности»- Автодополнение кода с учётом типов
- Информация при наведении: типы и сигнатуры
- Переход к определению
- Поиск ссылок
- Символы документа и рабочего пространства
- Иерархия вызовов (входящие и исходящие)
- Диагностика в реальном времени (ошибки парсинга, ошибки типов)
- Подсказки по сигнатурам параметров функций
Конфигурация
Заголовок раздела «Конфигурация»Включите LSP-сервер в .wippy.yaml:
version: "1.0"
lua: type_system: enabled: true
lsp: enabled: true address: ":7777"Поля конфигурации
Заголовок раздела «Поля конфигурации»| Поле | По умолчанию | Описание |
|---|---|---|
enabled | false | Включить TCP-сервер |
address | :7777 | Адрес TCP для прослушивания |
http_enabled | false | Включить HTTP-транспорт |
http_address | :7778 | Адрес HTTP для прослушивания |
http_path | /lsp | Путь HTTP-эндпоинта |
http_allow_origin | * | Разрешённый источник CORS |
max_message_bytes | 8388608 | Максимальный размер входящего сообщения (байт) |
TCP-транспорт
Заголовок раздела «TCP-транспорт»TCP-сервер использует JSON-RPC 2.0 со стандартным форматом LSP-сообщений (заголовки Content-Length). Это основной транспорт для интеграции с редакторами.
HTTP-транспорт
Заголовок раздела «HTTP-транспорт»HTTP-транспорт принимает POST-запросы с JSON-RPC-нагрузкой. Полезен для браузерных редакторов и веб-инструментов. Заголовки CORS включены для кросс-доменного доступа.
lsp: enabled: true http_enabled: true http_address: ":7778" http_path: "/lsp" http_allow_origin: "*"Схема URI документов
Заголовок раздела «Схема URI документов»LSP-сервер использует схему URI wippy:// для идентификации записей реестра:
wippy://namespace:entry_nameРедакторы сопоставляют эти URI с идентификаторами записей в реестре. Принимаются как формат wippy://, так и формат namespace:entry_name.
Индексирование
Заголовок раздела «Индексирование»LSP-сервер поддерживает индекс всех записей кода для быстрого поиска. Индексирование происходит в фоновом режиме с использованием нескольких потоков.
Ключевые особенности:
- Записи индексируются в порядке зависимостей (зависимости сначала)
- Изменения вызывают переиндексацию затронутых записей
- Несохранённые изменения в редакторе хранятся в оверлее
- Индекс инкрементальный - повторно обрабатываются только изменённые записи
Поддерживаемые методы LSP
Заголовок раздела «Поддерживаемые методы LSP»| Метод | Описание |
|---|---|
initialize | Согласование возможностей |
textDocument/didOpen | Отслеживание открытых документов |
textDocument/didChange | Полная синхронизация документа |
textDocument/didClose | Освобождение документов |
textDocument/hover | Информация о типе под курсором |
textDocument/definition | Переход к определению |
textDocument/references | Поиск всех ссылок |
textDocument/completion | Автодополнение кода |
textDocument/signatureHelp | Сигнатуры функций |
textDocument/diagnostic | Диагностика файла |
textDocument/documentSymbol | Символы файла |
workspace/symbol | Глобальный поиск символов |
textDocument/prepareCallHierarchy | Иерархия вызовов |
callHierarchy/incomingCalls | Поиск вызывающих |
callHierarchy/outgoingCalls | Поиск вызываемых |
Автодополнение
Заголовок раздела «Автодополнение»Механизм автодополнения разрешает типы через граф кода. Он предоставляет:
- Дополнение членов после
.и:(поля, методы) - Дополнение локальных переменных
- Дополнение символов уровня модуля
- Триггерные символы:
.,:
Диагностика
Заголовок раздела «Диагностика»Диагностика вычисляется при индексировании и включает:
- Ошибки парсинга (синтаксические проблемы)
- Ошибки проверки типов (несоответствия, неопределённые символы)
- Уровни серьёзности: error, warning, information, hint
Диагностика обновляется по мере набора текста через систему оверлеев документов.
Смотрите также
Заголовок раздела «Смотрите также»- Линтер - Проверка кода из командной строки
- Типы - Документация по системе типов
- Конфигурация - Конфигурация среды выполнения