Перейти к основному содержимому

Поддержка в редакторе

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 --stdio
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

Подсветка — сервер не нужен:

  1. Settings → Editor → TextMate Bundles+ → укажите папку editor/ репозитория.
  2. Settings → Editor → File Types → проверьте, что *.tdc связан с ней.

Языковой сервер:

  1. Поставьте бесплатный плагин LSP4IJ (Red Hat) из Marketplace.
  2. LSP4IJ → New Language Server:
    • Name: TDC
    • Command: tdcv2-lsp --stdio
    • File name patterns: *.tdc, language id tdc
  3. Откройте файл .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.

См. также

  • Справочник CLItdcv2 check и tdcv2 format, те самые два механизма, что стоят за подчёркиваниями и форматированием.
  • Коды ошибок — всё, что редактор может вам показать.
  • Установка пакетов — то, что будет предлагать автодополнение.