Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/just/injections.scm')
| -rw-r--r-- | runtime/queries/just/injections.scm | 90 |
1 files changed, 12 insertions, 78 deletions
diff --git a/runtime/queries/just/injections.scm b/runtime/queries/just/injections.scm index 39877be4..cae1035a 100644 --- a/runtime/queries/just/injections.scm +++ b/runtime/queries/just/injections.scm @@ -1,82 +1,16 @@ -; Specify nested languages that live within a `justfile` - -; ================ Always applicable ================ - ((comment) @injection.content - (#set! injection.language "comment")) - -; Highlight the RHS of `=~` as regex -((regex - (_) @injection.content) - (#set! injection.language "regex")) - -; ================ Global defaults ================ - -; Default everything to be bash -(recipe_body - !shebang - (#set! injection.language "bash") - (#set! injection.include-children)) @injection.content - -(external_command - (content) @injection.content - (#set! injection.language "bash")) - -; ================ Global language specified ================ -; Global language is set with something like one of the following: -; -; set shell := ["bash", "-c", ...] -; set shell := ["pwsh.exe"] -; -; We can extract the first item of the array, but we can't extract the language -; name from the string with something like regex. So instead we special case -; two things: powershell, which is likely to come with a `.exe` attachment that -; we need to strip, and everything else which hopefully has no extension. We -; separate this with a `#match?`. -; -; Unfortunately, there also isn't a way to allow arbitrary nesting or -; alternatively set "global" capture variables. So we can set this for item- -; level external commands, but not for e.g. external commands within an -; expression without getting _really_ annoying. Should at least look fine since -; they default to bash. Limitations... -; See https://github.com/tree-sitter/tree-sitter/issues/880 for more on that. - -(file - (setting "shell" ":=" "[" (string) @_langstr - (#match? @_langstr ".*(powershell|pwsh|cmd).*") - (#set! injection.language "powershell")) - [ - (recipe - (recipe_body - !shebang - (#set! injection.include-children)) @injection.content) - - (assignment - (expression - (value - (external_command - (content) @injection.content)))) - ]) - -(file - (setting "shell" ":=" "[" (string) @injection.language - (#not-match? @injection.language ".*(powershell|pwsh|cmd).*")) - [ - (recipe - (recipe_body - !shebang - (#set! injection.include-children)) @injection.content) + (#set! injection.language "comment")) - (assignment - (expression - (value - (external_command - (content) @injection.content)))) - ]) +(shebang_recipe + (shebang + interpreter:(TEXT) @injection.language) + (shebang_body) @injection.content +) -; ================ Recipe language specified - Helix only ================ +(source_file + (item (setting lang:(NAME) @injection.language)) + (item (recipe (body (recipe_body) @injection.content))) +) -; Set highlighting for recipes that specify a language using builtin shebang matching -(recipe_body - (shebang_line) @injection.shebang - (#set! injection.include-children)) @injection.content +; ((interpolation (expression) @injection.content) +; (#set! injection.language "just")) |