on master help sign in
Add standalone language support for `just` (#6453)
4cdba7cVuiMuich
book/src/generated/lang-support.md+1
@@ -72,6 +72,7 @@
72| jsonnet | ✓ | | | `jsonnet-language-server` |
72| jsonnet | ✓ | | | `jsonnet-language-server` |
73| jsx | ✓ | ✓ | ✓ | `typescript-language-server` |
73| jsx | ✓ | ✓ | ✓ | `typescript-language-server` |
74| julia | ✓ | ✓ | ✓ | `julia` |
74| julia | ✓ | ✓ | ✓ | `julia` |
75+| just | ✓ | ✓ | ✓ | |
75| kdl | ✓ | | | |
76| kdl | ✓ | | | |
76| kotlin | ✓ | | | `kotlin-language-server` |
77| kotlin | ✓ | | | `kotlin-language-server` |
77| latex | ✓ | ✓ | | `texlab` |
78| latex | ✓ | ✓ | | `texlab` |
languages.toml+15−2
@@ -978,8 +978,8 @@ source = { git = "https://github.com/uyha/tree-sitter-cmake", rev = "6e51463ef30
978[[language]]
978[[language]]
979name = "make"
979name = "make"
980scope = "source.make"
980scope = "source.make"
981−file-types = ["Makefile", "makefile", "mk", "Justfile", "justfile", ".justfile"]
981+file-types = ["Makefile", "makefile", "mk"]
982−injection-regex = "(make|makefile|Makefile|mk|just)"
982+injection-regex = "(make|makefile|Makefile|mk)"
983roots = []
983roots = []
984comment-token = "#"
984comment-token = "#"
985indent = { tab-width = 4, unit = "\t" }
985indent = { tab-width = 4, unit = "\t" }
@@ -2505,3 +2505,16 @@ language-server = { command = "clangd" }
2505[[grammar]]
2505[[grammar]]
2506name = "opencl"
2506name = "opencl"
2507source = { git = "https://github.com/lefp/tree-sitter-opencl", rev = "8e1d24a57066b3cd1bb9685bbc1ca9de5c1b78fb" }
2507source = { git = "https://github.com/lefp/tree-sitter-opencl", rev = "8e1d24a57066b3cd1bb9685bbc1ca9de5c1b78fb" }
2508+
2509+[[language]]
2510+name = "just"
2511+scope = "source.just"
2512+file-types = ["justfile", "Justfile", "just"]
2513+injection-regex = "just"
2514+roots = []
2515+comment-token = "#"
2516+indent = { tab-width = 4, unit = "\t" }
2517+
2518+[[grammar]]
2519+name = "just"
2520+source = { git = "https://github.com/IndianBoy42/tree-sitter-just", rev = "8af0aab79854aaf25b620a52c39485849922f766" }
runtime/queries/just/folds.scmnew file+4
@@ -0,0 +1,4 @@
1+(body) @fold
2+(recipe) @fold
3+(interpolation) @fold
4+(item (_) @fold)
runtime/queries/just/highlights.scmnew file+33
@@ -0,0 +1,33 @@
1+(assignment (NAME) @variable)
2+(alias (NAME) @variable)
3+(value (NAME) @variable)
4+(parameter (NAME) @variable)
5+(setting (NAME) @keyword)
6+(setting "shell" @keyword)
7+
8+(call (NAME) @function)
9+(dependency (NAME) @function)
10+(depcall (NAME) @function)
11+(recipeheader (NAME) @function)
12+
13+(depcall (expression) @variable.parameter)
14+(parameter) @variable.parameter
15+(variadic_parameters) @variable.parameter
16+
17+["if" "else"] @keyword.control.conditional
18+
19+(string) @string
20+
21+(boolean ["true" "false"]) @constant.builtin.boolean
22+
23+(comment) @comment
24+
25+; (interpolation) @string
26+
27+(shebang interpreter:(TEXT) @keyword ) @comment
28+
29+["export" "alias" "set"] @keyword
30+
31+["@" "==" "!=" "+" ":="] @operator
32+
33+[ "(" ")" "[" "]" "{{" "}}" "{" "}"] @punctuation.bracket
runtime/queries/just/indents.scmnew file+3
@@ -0,0 +1,3 @@
1+[
2+ (recipe_body)
3+] @indent
runtime/queries/just/injections.scmnew file+16
@@ -0,0 +1,16 @@
1+((comment) @injection.content
2+ (#set! injection.language "comment"))
3+
4+(shebang_recipe
5+ (shebang
6+ interpreter:(TEXT) @injection.language)
7+ (shebang_body) @injection.content
8+)
9+
10+(source_file
11+ (item (setting lang:(NAME) @injection.language))
12+ (item (recipe (body (recipe_body) @injection.content)))
13+)
14+
15+; ((interpolation (expression) @injection.content)
16+; (#set! injection.language "just"))
runtime/queries/just/locals.scmnew file+10
@@ -0,0 +1,10 @@
1+(assignment (NAME) @local.definition)
2+(alias left:(NAME) @local.definition)
3+(alias right:(NAME) @local.reference)
4+(value (NAME) @local.reference)
5+(parameter (NAME) @local.definition)
6+
7+(call (NAME) @local.reference)
8+(dependency (NAME) @local.reference)
9+(depcall (NAME) @local.reference)
10+(recipeheader (NAME) @local.definition)
runtime/queries/just/textobjects.scmnew file+48
@@ -0,0 +1,48 @@
1+(body) @function.inside
2+(recipe) @function.around
3+(expression
4+ if:(expression) @function.inside
5+)
6+(expression
7+ else:(expression) @function.inside
8+)
9+(interpolation (expression) @function.inside) @function.around
10+(settinglist (stringlist) @function.inside) @function.around
11+
12+(call (NAME) @class.inside) @class.around
13+(dependency (NAME) @class.inside) @class.around
14+(depcall (NAME) @class.inside)
15+
16+(dependency) @parameter.around
17+(depcall) @parameter.inside
18+(depcall (expression) @parameter.inside)
19+
20+(stringlist
21+ (string) @parameter.inside
22+ . ","? @_end
23+ ; Commented out since we don't support `#make-range!` at the moment
24+ ; (#make-range! "parameter.around" @parameter.inside @_end)
25+)
26+(parameters
27+ [(parameter)
28+ (variadic_parameters)] @parameter.inside
29+ . " "? @_end
30+ ; Commented out since we don't support `#make-range!` at the moment
31+ ; (#make-range! "parameter.around" @parameter.inside @_end)
32+)
33+
34+(expression
35+ (condition) @function.inside
36+) @function.around
37+(expression
38+ if:(expression) @function.inside
39+)
40+(expression
41+ else:(expression) @function.inside
42+)
43+
44+(item [(alias) (assignment) (export) (setting)]) @class.around
45+(recipeheader) @class.around
46+(line) @class.around
47+
48+(comment) @comment.around