Поддержка в редакторе
npm-пакет ставит две программы. tdcv2 генерирует данные, а tdcv2-lsp — это
языковой сервер: любому редактору, который говорит на LSP, он даёт проверку ошибок на
лету, автодополнение, всплывающие подсказки, переход к определению, поиск ссылок,
переименование и форматирование для файлов .tdc.
Внутри тот же парсер и тот же валидатор, что и у CLI. Диагностика, подчёркнутая в
редакторе, — это ровно то, что напечатал бы tdcv2 check:
второй реализации, которая могла бы разойтись, просто нет.
Что вы получаете
| Возможность | Что делает |
|---|---|
| Ошибки на лету | Красные подчёркивания прямо во время набора, точно на месте, с теми же кодами TDC… и подсказками «может быть, вы имели в виду…», что и у check |
| Автодополнение | Теги, атрибуты и значения — типы генераторов, имена последовательностей для parent=, теги compute внутри <compute> и адреса пакетов вместе с их description: |
| Подсказки при наведении | Короткое описание тега или атрибута; на ${{Name}} — какая это последовательность и объявлена ли она |
| Переход к определению | Ctrl/Cmd-клик по ${{Name}} или parent="Name" приводит к <sequence name="Name"> |
| Поиск ссылок | Все места, где последовательность используется в файле |
| Переименование | Переименовать последовательность — все ссылки поедут следом |
| Форматирование | Тот же принтер, что и у tdcv2 format |
Автодополнение срабатывает на <, пробел, " и точку — поэтому точка внутри
value="person." предложит то, что действительно установлено.
Подсветка синтаксиса — отдельная вещь, сервер для неё не нужен: это грамматика
TextMate в папке editor/ репозитория, которую читают и IntelliJ, и VS Code, и Sublime.
Установка
Библиотеки LSP — необязательные peer-зависимости. Обычная npm i tdcv2 для
генерации данных их не тянет: они ничего не стоят, пока вы не запускаете сервер:
npm i -g tdcv2
npm i -g vscode-languageserver vscode-languageserver-textdocument
Запустите без них — сервер скажет об этом, а не выбросит стек про неразрешённый модуль:
tdcv2-lsp: the TDC language server needs its optional packages, which are not installed by default. Install them to use the LSP: npm i vscode-languageserver vscode-languageserver-textdocument
Все редакторы ниже указывают на одну и ту же строку запуска:
tdcv2-lsp --stdio
Какие пакеты он дополняет
Сервер предлагает адреса, которые действительно видит: пакеты, встроенные в установку,
плюс data/packs/ или packs/ в любой открытой папке проекта. Поставьте локаль через
tdcv2 pack add и перезапустите сервер — её адреса
появятся в автодополнении, каждый со строкой description: из заголовка своего файла.
IntelliJ IDEA и другие IDE от JetBrains
Подсветка — сервер не нужен:
- Settings → Editor → TextMate Bundles → + → укажите папку
editor/репозитория. - Settings → Editor → File Types → проверьте, что
*.tdcсвязан с ней.
Языковой сервер:
- Поставьте бесплатный плагин LSP4IJ (Red Hat) из Marketplace.
- LSP4IJ → New Language Server:
- Name:
TDC - Command:
tdcv2-lsp --stdio - File name patterns:
*.tdc, language idtdc
- Name:
- Откройте файл
.tdc— ошибки подчёркиваются во время набора.
VS Code
Расширение-обёртка в папке editor/vscode/ репозитория подключает обе части и ставится
локально, без маркетплейса:
cd editor/vscode && npm install && npm run build
Дальше либо откройте эту папку в VS Code и нажмите F5, чтобы попробовать во втором
окне, либо соберите npx @vscode/vsce package и поставьте получившийся .vsix через
Install from VSIX….
Neovim
Через nvim-lspconfig, как свой сервер:
local configs = require('lspconfig.configs')
local lspconfig = require('lspconfig')
if not configs.tdc then
configs.tdc = {
default_config = {
cmd = { 'tdcv2-lsp', '--stdio' },
filetypes = { 'tdc' },
root_dir = lspconfig.util.root_pattern('.git', 'data'),
},
}
end
lspconfig.tdc.setup({})
Подсветка — либо из плагина, понимающего TextMate, либо из грамматики Tree-sitter, если её однажды добавят.
Любой другой редактор
Подойдёт всё, что говорит на LSP: направьте его на tdcv2-lsp --stdio для файлов
*.tdc. В сервере нет кода под конкретный редактор — server.ts это тонкая обёртка над
протоколом, а думающие части — чистые функции, общие с библиотекой и CLI.
См. также
- Справочник CLI —
tdcv2 checkиtdcv2 format, те самые два механизма, что стоят за подчёркиваниями и форматированием. - Коды ошибок — всё, что редактор может вам показать.
- Установка пакетов — то, что будет предлагать автодополнение.