tree-sitter-just
Tree-sitter grammar for Justfiles (casey/just)
Usage
Neovim
Just queries are now part of nvim-treesitter! Please follow installation
instructions at https://github.com/nvim-treesitter/nvim-treesitter.
Helix
Just queries are also part of Helix! They should be installed by default.
Manual Installation (Neovim)
This grammar can also be used locally, as a plugin with Plug, Packer, or a
manual clone. This also requires a simple ftdetect plugin for detecting
justfiles.
Packer:
use
Plug
Plug 'casey/tree-sitter-just'
Manual
git clone https://github.com/casey/tree-sitter-just \
~/.local/share/nvim/site/pack/tree-sitter-queries/start/tree-sitter-just
You can then do require('tree-sitter-just').setup({}) to register the parser
with tree-sitter. You can then do TSInstall/TSUpdate as usual to install
the parser
You can also add the parser manually using (This is similar to what is done in
require"tree-sitter-just".setup({}))
require.. =
Don't forget to :TSInstall after adding this. With this method you do not
have to add this repo as a plugin.
Please note that the nightly version of nvim-treesitter, at least since
5b90ea2abaa4303b9205b5c9002a8cdd0acd11a5 (2024-01-19) is required.
Manual Installation (Helix)
To use the latest version of this repository with Helix, you just need to
update the languages.toml file, often at ~/.config/helix/languages.toml:
[[]]
= "just"
# Use this line to use a local dependency
= { = "/path/toa/tree-sitter-just" }
# Use this line to use a git dependency
# source = { git = "https://github.com/casey/tree-sitter-just", rev = "d9da862c156020c1a83d3c6ccdda32be6d8a5d4a" }
[[]]
= "just"
= "scope.just"
= ["justfile", "JUSTFILE", "just"]
After updating languages.toml, run hx --grammar build to update.
To get syntax highlighting and other query-based features you will need to
place the queries in a queries/just directory within your runtime folder.
To link to a cloned repository, the following should work:
# Change the second path to your runtime directory if not at `~/.config/helix/runtime`
Contributing
The easiest way to get started is, fittingly, with
just.
# Make sure dependencies are available
# Create autogenerated files and run tests
# Create autogenerated files without testing
# Check linting rules
# Apply formatting
Note that just lint and just fmt must pass for all changes. You can verify
these automatically before committing by running just pre-commit-install.
All our queries are in queries-src. This directory is what gets tested by
tree-sitter, and should be usable by helix. To generate queries for NeoVim,
run ./build-flavored-queries.py (this is run as part of npm run gen).
You can use the :InspectTree
command to explore the resulting parse tree, and
:Inspect to view highlight
groups.
Quirks of Just
Just currently doesn't seem to support comments between attributes or within if statements, so we do not either.
[private]
# hello!
[no-cd]
foo:
foo := if true {
# nope!
"abcd"
}
Test Information
The tests directory contains "corpus" tests that are checked for syntax, as well as "highlight" tests that check the result. The "highlight" test directory includes some test files generated by the fuzzer that aren't always human readable.