Built-in language table
Notes on specific languages
TypeScript and TSX each have a separate language entry so that the JSX-awaretsx grammar and its queries are used for .tsx files. Both languages try vtsls first and fall back to typescript-language-server; whichever binary is found on PATH is used. Configure lsp = [...] in [languages.typescript] if you want to restrict to a single server.
C and C++ both use clangd. .h files are routed to C by default; C++-specific headers (.hpp, .hh, .hxx) are routed to C++.
JavaScript includes .jsx, .mjs, and .cjs extensions in addition to .js.
Markdown installs only the block-level grammar from tree-sitter-grammars/tree-sitter-markdown. The inline grammar requires injection support that is not yet implemented.
SQL, Dockerfile, Make, and Diff have built-in grammar recipes but no built-in LSP server.
Go and Make use tab indentation by default — gofmt requires it for Go, and Make recipes are tab-indented by syntax.
HCL covers Terraform (.tf, .tfvars) and generic HCL configs (.hcl) through a single grammar. The terraform-ls server is attached by default.
Vue and Svelte use HTML-style comment tokens (<!--) since the outermost layer of each single-file component is a template. Comments inside <script> blocks will be incorrect until grammar injection is wired up.
Elixir and Nix each register two LSP servers — the preferred server is listed first, and the first binary found on PATH wins (the same pattern as TypeScript). Set lsp = [...] in [languages.elixir] or [languages.nix] to pin a specific server.
OCaml uses a single language entry for both .ml and .mli. Files share ocamllsp and ocamlformat.
Swift depends on sourcekit-lsp, which ships with the Swift toolchain — install Swift and the server is already on PATH.
Julia and Gleam host their language server inside the language’s own runtime rather than a standalone binary: Julia launches LanguageServer.jl through the julia executable, and Gleam’s server is built into the gleam CLI. Install the toolchain and the server comes with it.
Scala maps .scala sources, .sbt build files, and .sc worksheets to a single entry, served by metals (install it through Coursier).
XML also covers .xsd, .xsl, .xslt, .svg, and .wsdl. There is no line-comment token, so the <space>c toggle uses the <!-- --> block form.
Installing grammars and LSP servers
Grammar recipes and LSP server configurations are independent. You need to install both separately:1
Install the tree-sitter grammar
~/.config/vorto/. See Installing tree-sitter grammars for full details.2
Install the LSP server binary
Install the server binary through your system’s package manager or language toolchain. For example:The binary must be on your
PATH when you start Vorto.Adding custom languages
You can add support for languages not listed here by declaring a[languages.<name>] block in ~/.config/vorto/config.toml:
LSP server binaries are never bundled with Vorto. You must install them separately and ensure they are available on your
PATH.