summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml17
-rw-r--r--runtime/queries/just/folds.scm4
-rw-r--r--runtime/queries/just/highlights.scm33
-rw-r--r--runtime/queries/just/indents.scm3
-rw-r--r--runtime/queries/just/injections.scm16
-rw-r--r--runtime/queries/just/locals.scm10
-rw-r--r--runtime/queries/just/textobjects.scm48
8 files changed, 130 insertions, 2 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index e434961b..331d212f 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -72,6 +72,7 @@
| jsonnet | ✓ | | | `jsonnet-language-server` |
| jsx | ✓ | ✓ | ✓ | `typescript-language-server` |
| julia | ✓ | ✓ | ✓ | `julia` |
+| just | ✓ | ✓ | ✓ | |
| kdl | ✓ | | | |
| kotlin | ✓ | | | `kotlin-language-server` |
| latex | ✓ | ✓ | | `texlab` |
diff --git a/languages.toml b/languages.toml
index 575ed82d..8a0aa661 100644
--- a/languages.toml
+++ b/languages.toml
@@ -978,8 +978,8 @@ source = { git = "https://github.com/uyha/tree-sitter-cmake", rev = "6e51463ef30
[[language]]
name = "make"
scope = "source.make"
-file-types = ["Makefile", "makefile", "mk", "Justfile", "justfile", ".justfile"]
-injection-regex = "(make|makefile|Makefile|mk|just)"
+file-types = ["Makefile", "makefile", "mk"]
+injection-regex = "(make|makefile|Makefile|mk)"
roots = []
comment-token = "#"
indent = { tab-width = 4, unit = "\t" }
@@ -2505,3 +2505,16 @@ language-server = { command = "clangd" }
[[grammar]]
name = "opencl"
source = { git = "https://github.com/lefp/tree-sitter-opencl", rev = "8e1d24a57066b3cd1bb9685bbc1ca9de5c1b78fb" }
+
+[[language]]
+name = "just"
+scope = "source.just"
+file-types = ["justfile", "Justfile", "just"]
+injection-regex = "just"
+roots = []
+comment-token = "#"
+indent = { tab-width = 4, unit = "\t" }
+
+[[grammar]]
+name = "just"
+source = { git = "https://github.com/IndianBoy42/tree-sitter-just", rev = "8af0aab79854aaf25b620a52c39485849922f766" }
diff --git a/runtime/queries/just/folds.scm b/runtime/queries/just/folds.scm
new file mode 100644
index 00000000..6fc68fbd
--- /dev/null
+++ b/runtime/queries/just/folds.scm
@@ -0,0 +1,4 @@
+(body) @fold
+(recipe) @fold
+(interpolation) @fold
+(item (_) @fold)
diff --git a/runtime/queries/just/highlights.scm b/runtime/queries/just/highlights.scm
new file mode 100644
index 00000000..1026f654
--- /dev/null
+++ b/runtime/queries/just/highlights.scm
@@ -0,0 +1,33 @@
+(assignment (NAME) @variable)
+(alias (NAME) @variable)
+(value (NAME) @variable)
+(parameter (NAME) @variable)
+(setting (NAME) @keyword)
+(setting "shell" @keyword)
+
+(call (NAME) @function)
+(dependency (NAME) @function)
+(depcall (NAME) @function)
+(recipeheader (NAME) @function)
+
+(depcall (expression) @variable.parameter)
+(parameter) @variable.parameter
+(variadic_parameters) @variable.parameter
+
+["if" "else"] @keyword.control.conditional
+
+(string) @string
+
+(boolean ["true" "false"]) @constant.builtin.boolean
+
+(comment) @comment
+
+; (interpolation) @string
+
+(shebang interpreter:(TEXT) @keyword ) @comment
+
+["export" "alias" "set"] @keyword
+
+["@" "==" "!=" "+" ":="] @operator
+
+[ "(" ")" "[" "]" "{{" "}}" "{" "}"] @punctuation.bracket
diff --git a/runtime/queries/just/indents.scm b/runtime/queries/just/indents.scm
new file mode 100644
index 00000000..3db59746
--- /dev/null
+++ b/runtime/queries/just/indents.scm
@@ -0,0 +1,3 @@
+[
+ (recipe_body)
+] @indent
diff --git a/runtime/queries/just/injections.scm b/runtime/queries/just/injections.scm
new file mode 100644
index 00000000..cae1035a
--- /dev/null
+++ b/runtime/queries/just/injections.scm
@@ -0,0 +1,16 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+(shebang_recipe
+ (shebang
+ interpreter:(TEXT) @injection.language)
+ (shebang_body) @injection.content
+)
+
+(source_file
+ (item (setting lang:(NAME) @injection.language))
+ (item (recipe (body (recipe_body) @injection.content)))
+)
+
+; ((interpolation (expression) @injection.content)
+; (#set! injection.language "just"))
diff --git a/runtime/queries/just/locals.scm b/runtime/queries/just/locals.scm
new file mode 100644
index 00000000..18e162a9
--- /dev/null
+++ b/runtime/queries/just/locals.scm
@@ -0,0 +1,10 @@
+(assignment (NAME) @local.definition)
+(alias left:(NAME) @local.definition)
+(alias right:(NAME) @local.reference)
+(value (NAME) @local.reference)
+(parameter (NAME) @local.definition)
+
+(call (NAME) @local.reference)
+(dependency (NAME) @local.reference)
+(depcall (NAME) @local.reference)
+(recipeheader (NAME) @local.definition)
diff --git a/runtime/queries/just/textobjects.scm b/runtime/queries/just/textobjects.scm
new file mode 100644
index 00000000..4be37958
--- /dev/null
+++ b/runtime/queries/just/textobjects.scm
@@ -0,0 +1,48 @@
+(body) @function.inside
+(recipe) @function.around
+(expression
+ if:(expression) @function.inside
+)
+(expression
+ else:(expression) @function.inside
+)
+(interpolation (expression) @function.inside) @function.around
+(settinglist (stringlist) @function.inside) @function.around
+
+(call (NAME) @class.inside) @class.around
+(dependency (NAME) @class.inside) @class.around
+(depcall (NAME) @class.inside)
+
+(dependency) @parameter.around
+(depcall) @parameter.inside
+(depcall (expression) @parameter.inside)
+
+(stringlist
+ (string) @parameter.inside
+ . ","? @_end
+ ; Commented out since we don't support `#make-range!` at the moment
+ ; (#make-range! "parameter.around" @parameter.inside @_end)
+)
+(parameters
+ [(parameter)
+ (variadic_parameters)] @parameter.inside
+ . " "? @_end
+ ; Commented out since we don't support `#make-range!` at the moment
+ ; (#make-range! "parameter.around" @parameter.inside @_end)
+)
+
+(expression
+ (condition) @function.inside
+) @function.around
+(expression
+ if:(expression) @function.inside
+)
+(expression
+ else:(expression) @function.inside
+)
+
+(item [(alias) (assignment) (export) (setting)]) @class.around
+(recipeheader) @class.around
+(line) @class.around
+
+(comment) @comment.around