Supported Languages
Rune offers first-class support for a growing set of programming languages: deep code intelligence, a built-in debugger, and language-specific commands on top of editing. This page lists where each language stands today.
First-class languages
| Language | Status |
|---|---|
| Go | Supported |
| Python | Supported |
| Rust | Coming Soon |
| TypeScript | Roadmap |
Code intelligence works the same way across all of them. See the Code
Intelligence guide for the cross-language lsp
command: go to definition, find references, diagnostics, hover, rename,
and formatting.
Working in a repository with several projects side by side? See the Monorepos guide for how Rune discovers each project and keeps search fast at scale.
Everything else: language packages
Beyond the first-class languages, Rune understands the structure of over 300 more through downloadable language packages. Each package bundles a tree-sitter grammar and a set of query files, giving Rune a real parse tree for the file instead of plain text. That parse tree powers syntax highlighting, code folding, indentation, and (most usefully) structural search and navigation.
ada | git_config | markdown_inline | sflog |
agda | git_rebase | matlab | slang |
angular | gitattributes | mdx | slim |
apex | gitcommit | menhir | slint |
arduino | gitignore | mermaid | smali |
asm | gleam | meson | smithy |
astro | glimmer | mlir | snakemake |
authzed | glimmer_javascript | nasm | snl |
awk | glimmer_typescript | nginx | solidity |
bash | glsl | nickel | soql |
bass | gn | nim | sosl |
beancount | gnuplot | nim_format_string | sourcepawn |
bibtex | go | ninja | sparql |
bicep | goctl | nix | sproto |
bitbake | godot_resource | nqc | sql |
blade | gomod | nu | squirrel |
bp | gosum | objc | ssh_config |
bpftrace | gotmpl | objdump | starlark |
brightscript | gowork | ocaml | strace |
c | gpg | ocaml_interface | styled |
c_sharp | graphql | ocamllex | superhtml |
c3 | gren | odin | surface |
caddy | groovy | pascal | svelte |
cairo | groq | passwd | sway |
capnp | gstlaunch | pem | swift |
chatito | hack | perl | sxhkdrc |
circom | hare | php | systemtap |
clojure | haskell | php_only | systemverilog |
cmake | haskell_persistent | phpdoc | t32 |
comment | hcl | pioasm | tablegen |
commonlisp | heex | pkl | tact |
cooklang | helm | po | tcl |
corn | hjson | pod | teal |
cpon | hlsl | poe_filter | templ |
cpp | hocon | pony | tera |
css | hoon | powershell | terraform |
csv | html | printf | textproto |
cuda | htmldjango | prisma | thrift |
cue | http | problog | tiger |
cylc | hurl | prolog | tlaplus |
d | hyprlang | promql | todotxt |
dart | idl | properties | toml |
desktop | idris | proto | tsv |
devicetree | ini | prql | tsx |
dhall | inko | psv | turtle |
diff | ispc | pug | twig |
disassembly | janet_simple | puppet | typescript |
djot | java | purescript | typespec |
dockerfile | javadoc | pymanifest | typoscript |
dot | javascript | python | typst |
doxygen | jinja | ql | udev |
dtd | jinja_inline | qmldir | ungrammar |
earthfile | jq | qmljs | unison |
ebnf | jsdoc | query | usd |
editorconfig | json | r | uxntal |
eds | json5 | racket | v |
eex | jsonnet | rasi | vala |
elixir | julia | razor | vento |
elm | just | rbs | vhdl |
elsa | kcl | re2c | vhs |
elvish | kconfig | readline | vim |
embedded_template | kdl | regex | vimdoc |
enforce | kos | rego | vrl |
erlang | kotlin | requirements | vue |
facility | koto | rescript | wgsl |
faust | kusto | rifleconf | wgsl_bevy |
fennel | lalrpop | rnoweb | wing |
fidl | latex | robot | wit |
firrtl | ledger | robots_txt | wxml |
fish | linkerscript | roc | xcompose |
forth | liquid | ron | xml |
fortran | llvm | rst | xresources |
fsh | lua | ruby | yaml |
fsharp | luadoc | runescript | yang |
func | luap | rust | yuck |
gap | luau | scala | zig |
gaptst | m68k | scfg | ziggy |
gdscript | make | scheme | ziggy_schema |
gdshader | markdown | scss | zsh |
Installing a language package
You do not install these ahead of time. When you open a file in a
language whose package is not yet installed, Rune offers to download and
install it, so the right grammar is always ready when you open the
matching file type. This is governed by the updates.auto_install
setting, which is False by default: Rune prompts before installing.
During first-run onboarding, Rune installs packages without prompting
regardless of this setting.
To install packages silently without being asked, set auto_install to
True:
- config.yaml
- config.star
updates:
auto_install: true
config["updates"]["auto_install"] = True
With auto-install turned off (the default), opening a file in a language whose package is not yet installed makes Rune prompt you:
| Option | Effect |
|---|---|
| Yes | Install the package for this file. |
| Yes, Always | Install now, and auto-install future languages on open without asking again. |
| No | Skip it this time. |
Yes and No apply only to the current file. Yes, Always persists your choice: it installs this package and auto-installs future languages on open without asking again.