Skip to main content

Editor support

The npm package ships two executables. tdcv2 generates data; tdcv2-lsp is a language server that gives any LSP-speaking editor live error checking, completion, hover, go-to-definition, find-references, rename and formatting for .tdc files.

It is the same parser and the same validator the CLI uses. A diagnostic you see underlined in the editor is the one tdcv2 check would print — there is no second implementation to drift.

What you get​

FeatureWhat it does
Live errorsRed underlines as you type, at the exact position, with the same TDC… codes and "did you mean…" suggestions as check
CompletionTags, attributes and values — generator types, sequence names for parent=, compute tags inside a <compute>, and pack addresses with their description: text
HoverA short description on a tag or an attribute; on ${{Name}}, which sequence it is and whether it is declared
Go to definitionCtrl/Cmd-click ${{Name}} or parent="Name" and land on <sequence name="Name">
Find referencesEvery use of a sequence in the file
RenameRename a sequence and every reference follows
FormatThe same pretty-printer as tdcv2 format

Completion triggers on <, a space, " and . — so typing a dot inside value="person." offers what is actually installed.

Syntax highlighting is a separate artefact and needs no server: a TextMate grammar in the repository's editor/ folder, which IntelliJ, VS Code and Sublime all read.

Install​

The LSP libraries are optional peer dependencies. A plain npm i tdcv2 for generating data does not pull them in — they cost nothing until you run the server:

npm i -g tdcv2
npm i -g vscode-languageserver vscode-languageserver-textdocument

Run without them and the server says so rather than throwing a module-resolution stack:

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

Every editor below points at the same launch line:

tdcv2-lsp --stdio

Which packs it completes​

The server offers the addresses it can actually see: the packs bundled with the install, plus data/packs/ or packs/ under any open workspace folder. Install a locale with tdcv2 pack add and restart the server to have its addresses appear in completion, each with the description: line from its file header.

IntelliJ IDEA and other JetBrains IDEs​

Highlighting — no server needed:

  1. Settings → Editor → TextMate Bundles → + → point it at the repository's editor/ folder.
  2. Settings → Editor → File Types → check that *.tdc is associated.

The language server:

  1. Install the free LSP4IJ plugin (Red Hat) from the Marketplace.
  2. LSP4IJ → New Language Server:
    • Name: TDC
    • Command: tdcv2-lsp --stdio
    • File name patterns: *.tdc, language id tdc
  3. Open a .tdc file — errors are underlined as you type.

VS Code​

A wrapper extension in the repository's editor/vscode/ folder wires up both pieces and installs locally, without the marketplace:

cd editor/vscode && npm install && npm run build

Then either open that folder in VS Code and press F5 to try it in a second window, or run npx @vscode/vsce package and install the resulting .vsix through Install from VSIX….

Neovim​

With nvim-lspconfig, as a custom server:

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({})

Highlighting comes from a TextMate-compatible plugin, or from a Tree-sitter grammar if one is added later.

Any other editor​

Anything that speaks LSP works: point it at tdcv2-lsp --stdio for files matching *.tdc. The server holds no editor-specific code — server.ts is a thin wrapper over the protocol, and the parts that do the thinking are pure functions shared with the library and the CLI.

See also​

  • CLI reference — tdcv2 check and tdcv2 format, the same two engines behind the underlines and the formatter.
  • Error codes — every code the editor can show you.
  • Installing packs — what completion will offer.