Reference it from your editor somehow. //TODO
My full config for roc is below:
[language-server.roc-ls]
command = "roc_language_server"
[[language]]
name = "roc"
scope = "source.roc"
injection-regex = "roc"
file-types = ["roc"]
shebangs = ["roc"]
roots = []
comment-token = "#"
language-servers = ["roc-ls"]
indent = { tab-width = 2, unit = " " }
auto-format = true
formatter = { command = "roc", args =[ "format", "--stdin", "--stdout"]}
[language.auto-pairs]
'(' = ')'
'{' = '}'
'[' = ']'
'"' = '"'
[[grammar]]
name = "roc"
source = { git = "https://github.com/faldor20/tree-sitter-roc.git", rev = "whateverTheLatestCommitIs" }- After adding the above to your
languages.toml, runhx --grammar fetchand thenhx --grammar build - Copy the queries into your helix config using:
mkdir -p '~/.config/helix/runtime/queries/roc/'
cp ./queries-generated/helix/queries/* '~/.config/helix/runtime/queries/roc/'
- Run
hx --health rocin a new shell and verify that your changes have been picked up correctly. If things are green, you're good to go.
Install the nvim-treesitter plugin using your favorite package manager. The Roc language is supported by nvim-treesitter. Install it with the command:
:TSInstall rocAdd the code in neovim/roc.lua to your config somewhere.
Copy the folder queries-generated/neovim/queries to your neovim config at after/ or in a custom neovim plugin at its root directory ./
eg: after/queries/roc/highlights.luaor my_roc_plugin/queries/roc/highlights.lua
A package providing a major mode for Roc is under development.
Currently i use nix for development so to start the dev environment in nix run
nix developI've had some odd issues with the system version of libc being incompatible with my version of treesitter. if tree-sitter is spitting out weird errors try running it in an isolated environments
nix develop -iIf you are outside of nix. You will need:
- The tree-sitter cli, which will be installed when you run
npm install - A c compiler like gcc or clang
This repo keeps a single set of base queries in the queries folder and generates editor-specific query files via JSON mappings in query-maps. Each mapping contains per-file sections (highlights, indents, injections, locals, textobjects, tags) and must include every capture used in the base queries. Set a value to null or an empty string to drop a capture for a given editor.
To generate query outputs, run:
npm run queries:generate
This writes output to queries-generated//...
Once you've made a change, to test it, run:
tree-sitter generate
tree-sitter testif you add a new feature you should add a test to one of the test files in test/corpus/*.txt
once you are happy with you changes run
tree-sitter test --updateand it will update the test files with your new parsed tree
Common tasks are available via justfile:
just test-genruns tree-sitter generate and tests.just test-gen-filter TEST=...runs generate and filters tests.just testruns tests only.just test-updateupdates test corpus outputs.just build-allbuilds WASM.just generate-checkensures generated parser files are up-to-date.just queries-generategenerates editor query outputs.just queries-checkverifies generated queries are clean.just ciruns generate-check, tests, and queries-check.
The following npm scripts are designed for CI:
npm run ts:generate-checkensures parser generation is clean.npm run ts:testruns parser tests.npm run queries:checkvalidates query templating output.npm run ciruns all checks.