Любой клиент LSP
Сервер — oxl lsp (флаг --stdio принимается и игнорируется: транспорт один, JSON-RPC 2.0 с Content-Length по stdin/stdout).
Параметры клиента:
| Параметр | Значение |
|---|---|
| Команда | oxl lsp |
| Язык, расширение | oxl, *.oxl |
| Корень | каталог с oxl.toml (иначе файл анализируется отдельно) |
| Синхронизация | инкрементальная (textDocumentSync.change = 2), UTF-8 с нормализацией перевода строк |
| Кодировка позиций | UTF-16 по умолчанию; если клиент предлагает utf-8 в general.positionEncodings, выбирается он |
| Триггеры дополнения | . и :; подсказки сигнатур — ( и , |
| Регистрация файлов | клиент присылает workspace/didChangeWatchedFiles — сервер перечитывает изменённые с диска файлы |
Опции (initializationOptions или workspace/didChangeConfiguration → settings.oxl):
{
"debounceMs": 150,
"diagnosticDocsBase": "https://docs.example.org/ru/diagnostics/",
"inlayHints": { "types": true, "chainErrors": true, "effects": true, "pipelineRoles": true, "callMarkers": true }
}Переменные окружения: OXL_STD_DIR (исходники стандартной библиотеки), OXL_DIAG_DOCS (основа ссылок диагностик),
OXL_LSP_LOG=1 (трассировка запросов и времён в stderr; то же — oxl lsp --log).
Возможности, которые объявляет сервер#
hover, definition, typeDefinition, references, documentHighlight, rename (с prepareRename), documentSymbol, workspaceSymbol,
completion, signatureHelp, formatting / rangeFormatting / onTypeFormatting, codeAction, semanticTokens (full и range),
inlayHint, публикация диагностик с code, codeDescription.href (ссылка на страницу диагностики), relatedInformation,
тегами Unnecessary/Deprecated и исправлениями в data.
Проверка вручную#
printf 'Content-Length: 58\r\n\r\n{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | oxl lsp --logОтвет на initialize содержит serverInfo (oxl-lsp) и перечисленные возможности. Если клиент «зависает» при старте, чаще всего
проблема в PATH редактора: запустите его из терминала или укажите oxl полным путём.
Подсветка без сервера#
Для редакторов на tree-sitter — грамматика share/oxl/tree-sitter-oxl (страница); для редакторов на TextMate —
syntaxes/oxl.tmLanguage.json из распакованного .vsix. Скрипт проверки грамматики:
python3 tools/tree-sitter-oxl/scripts/check.py -v.
Отладчик#
oxl dap — адаптер DAP по stdio (отладка): клиент запускает команду и ведёт обычный диалог
initialize → launch → setBreakpoints → configurationDone.