From 3ba21f96a434facb306f9fbe2f2e106859b28ba4 Mon Sep 17 00:00:00 2001 From: Omar Valdez Date: Sun, 20 Oct 2024 01:10:30 -0700 Subject: feat(xresources): add parser and queries (#7260) --- lockfile.json | 3 ++ lua/nvim-treesitter/parsers.lua | 9 +++++ queries/xresources/folds.scm | 10 ++++++ queries/xresources/highlights.scm | 75 +++++++++++++++++++++++++++++++++++++++ queries/xresources/injections.scm | 5 +++ queries/xresources/locals.scm | 12 +++++++ 6 files changed, 114 insertions(+) create mode 100644 queries/xresources/folds.scm create mode 100644 queries/xresources/highlights.scm create mode 100644 queries/xresources/injections.scm create mode 100644 queries/xresources/locals.scm diff --git a/lockfile.json b/lockfile.json index c11692a43..1077dcfd6 100644 --- a/lockfile.json +++ b/lockfile.json @@ -878,6 +878,9 @@ "xml": { "revision": "809266ed1694d64dedc168a18893cc254e3edf7e" }, + "xresources": { + "revision": "702e1e64ae14635346ffeb945d16f42d009c147a" + }, "yaml": { "revision": "7b03feefd36b5f155465ca736c6304aca983b267" }, diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 48beabd9b..f6731303d 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -2533,6 +2533,15 @@ list.xml = { maintainers = { "@ObserverOfTime" }, } +list.xresources = { + install_info = { + url = "https://github.com/ValdezFOmar/tree-sitter-xresources", + files = { "src/parser.c" }, + }, + filetype = "xdefaults", + maintainers = { "@ValdezFOmar" }, +} + list.yaml = { install_info = { url = "https://github.com/tree-sitter-grammars/tree-sitter-yaml", diff --git a/queries/xresources/folds.scm b/queries/xresources/folds.scm new file mode 100644 index 000000000..9cc7d5cec --- /dev/null +++ b/queries/xresources/folds.scm @@ -0,0 +1,10 @@ +[ + (elif_directive) + (elifdef_directive) + (else_directive) + (if_directive) + (ifdef_directive) + (preprocessor_comment) + (comment)+ + (include_directive)+ +] @fold diff --git a/queries/xresources/highlights.scm b/queries/xresources/highlights.scm new file mode 100644 index 000000000..4bf394788 --- /dev/null +++ b/queries/xresources/highlights.scm @@ -0,0 +1,75 @@ +[ + (comment) + (preprocessor_comment) +] @comment @spell + +"#include" @keyword.import + +[ + "#define" + "#undef" +] @keyword.directive.define + +[ + "#if" + "#ifdef" + "#ifndef" + "#elif" + "#elifdef" + "#elifndef" + "#else" + "#endif" + (directive) +] @keyword.directive + +(identifier) @variable + +(define_directive + name: (identifier) @constant.macro) + +(define_function_directive + name: (identifier) @function.macro) + +(parameters + (identifier) @variable.parameter) + +"..." @variable.parameter.builtin + +(undef_directive + name: (identifier) @constant.macro) + +(ifdef_directive + condition: (identifier) @constant.macro) + +(elifdef_directive + condition: (identifier) @constant.macro) + +(expansion) @markup.raw + +(component) @variable.member + +(components + (component) @property .) + +[ + (string) + (resource_value) +] @string + +(escape_sequence) @string.escape + +[ + "*" + (any_component) +] @character.special + +[ + "." + "," + ":" +] @punctuation.delimiter + +[ + "(" + ")" +] @punctuation.bracket diff --git a/queries/xresources/injections.scm b/queries/xresources/injections.scm new file mode 100644 index 000000000..1f12a2148 --- /dev/null +++ b/queries/xresources/injections.scm @@ -0,0 +1,5 @@ +([ + (comment) + (preprocessor_comment) +] @injection.content + (#set! injection.language "comment")) diff --git a/queries/xresources/locals.scm b/queries/xresources/locals.scm new file mode 100644 index 000000000..a7f932418 --- /dev/null +++ b/queries/xresources/locals.scm @@ -0,0 +1,12 @@ +(define_directive + name: (identifier) @local.definition.macro) + +(define_function_directive + name: (identifier) @local.definition.macro) + +(parameters + (identifier) @local.definition.parameter) + +(identifier) @local.reference + +(resources) @local.scope -- cgit v1.2.3-70-g09d2