Tree-sitter grammar for Justfiles (casey/just)
Just queries are now part of nvim-treesitter
! Please follow installation
instructions at https://github.com/nvim-treesitter/nvim-treesitter.
Just queries are also part of Helix! They should be installed by default.
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 "IndianBoy42/tree-sitter-just"
Plug
Plug 'IndianBoy42/tree-sitter-just'
Manual
git clone https://github.com/IndianBoy42/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("nvim-treesitter.parsers").get_parser_configs().just = {
install_info = {
url = "https://github.com/IndianBoy42/tree-sitter-just", -- local path or git repo
files = { "src/parser.c", "src/scanner.c" },
branch = "main",
-- use_makefile = true -- this may be necessary on MacOS (try if you see compiler errors)
},
maintainers = { "@IndianBoy42" },
}
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.
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
:
[[grammar]]
name = "just"
# Use this line to use a local dependency
source = { path = "/path/toa/tree-sitter-just" }
# Use this line to use a git dependency
# source = { git = "https://github.com/IndianBoy42/tree-sitter-just", rev = "7ad370abd9eb80e9e5266ea04a1e77d5b1692321" }
[[language]]
name = "just"
scope = "scope.just"
file-types = ["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`
ln -s $(realpath queries-flavored/helix/) ~/.config/helix/runtime/queries/just
The easiest way to get started is, fittingly, with
just
.
# Make sure dependencies are available
just setup
# Create autogenerated files and run tests
just test
# Create autogenerated files without testing
just gen
# Check linting rules
just lint
# Apply formatting
just fmt
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.
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"
}
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.