diff --git a/SUPPORTED_LANGUAGES.md b/SUPPORTED_LANGUAGES.md index 25c5e1137..24a639e0e 100644 --- a/SUPPORTED_LANGUAGES.md +++ b/SUPPORTED_LANGUAGES.md @@ -244,6 +244,7 @@ jsx (queries only)[^jsx] | unstable | `HFIJ ` | | @steelsojka [rego](https://github.com/FallenAngel97/tree-sitter-rego) | unstable | `H  J ` | | @FallenAngel97 [requirements](https://github.com/tree-sitter-grammars/tree-sitter-requirements) | unstable | `H  J ` | | @ObserverOfTime [rescript](https://github.com/rescript-lang/tree-sitter-rescript) | unstable | `HFIJL` | | @ribru17 +[rifleconf](https://github.com/purarue/tree-sitter-rifleconf) | unstable | `     ` | | @purarue [rnoweb](https://github.com/bamonroe/tree-sitter-rnoweb) | unstable | `HF J ` | | @bamonroe [robot](https://github.com/Hubro/tree-sitter-robot) | unstable | `HFIJ ` | | @Hubro [robots](https://github.com/opa-oz/tree-sitter-robots-txt) | unstable | `H  J ` | | @opa-oz diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 822421bfe..d9e373cc2 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -1908,6 +1908,14 @@ return { maintainers = { '@ribru17' }, tier = 2, }, + rifleconf = { + install_info = { + url = 'https://github.com/purarue/tree-sitter-rifleconf', + revision = '1ae719d850b757046799048fbc8867e555dc5463', + }, + maintainers = { '@purarue' }, + tier = 2, + }, rnoweb = { install_info = { revision = '1a74dc0ed731ad07db39f063e2c5a6fe528cae7f', diff --git a/runtime/queries/rifleconf/highlights.scm b/runtime/queries/rifleconf/highlights.scm new file mode 100644 index 000000000..18b5b3673 --- /dev/null +++ b/runtime/queries/rifleconf/highlights.scm @@ -0,0 +1,22 @@ +(comment) @comment @spell + +[ + "," + ";" +] @punctuation.delimiter + +"=" @operator + +(binary_condition_identifier) @keyword + +(unary_condition_identifier) @keyword + +(condition_expression + (binary_condition_expression + (binary_condition_identifier) @kw_name + (identifier) @number) + (#eq? @kw_name "number")) + +(ask) @function.builtin + +(string) @string diff --git a/runtime/queries/rifleconf/injections.scm b/runtime/queries/rifleconf/injections.scm new file mode 100644 index 000000000..f90c0c5af --- /dev/null +++ b/runtime/queries/rifleconf/injections.scm @@ -0,0 +1,14 @@ +; These are all interpreted as regex when evaluated +; https://github.com/ranger/ranger/blob/38bb8901004b75a407ffee4b9e176bc0a436cb15/ranger/ext/rifle.py#L273-L282 +(binary_condition_expression + (binary_condition_identifier) @rc_keyword + (identifier) @injection.content + (#any-of? @rc_keyword "match" "ext" "mime" "name" "path" "has" "env" "label") + (#set! injection.language "regex")) + + +; highlight any commands using the bash tree-sitter parser +(command_list + (command) @injection.content + (#set! injection.include-children) + (#set! injection.language "bash"))