Unnamed repository; edit this file 'description' to name the repository.
kdl queries: basic tag.scm and niri injections (#14401)
Axlefublr 6 months ago
parent ff376b0 · commit 14030d0
-rw-r--r--book/src/generated/lang-support.md2
-rw-r--r--runtime/queries/kdl/injections.scm63
-rw-r--r--runtime/queries/kdl/tags.scm3
3 files changed, 67 insertions, 1 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index d7bf9eff..c8511ccf 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -140,7 +140,7 @@
| julia | ✓ | ✓ | ✓ | | | `julia` |
| just | ✓ | ✓ | ✓ | ✓ | | `just-lsp` |
| kconfig | ✓ | | ✓ | | | |
-| kdl | ✓ | ✓ | ✓ | | | |
+| kdl | ✓ | ✓ | ✓ | ✓ | | |
| koka | ✓ | | ✓ | | | `koka` |
| kotlin | ✓ | ✓ | ✓ | ✓ | | `kotlin-language-server` |
| koto | ✓ | ✓ | ✓ | | | `koto-ls` |
diff --git a/runtime/queries/kdl/injections.scm b/runtime/queries/kdl/injections.scm
new file mode 100644
index 00000000..eaa168e2
--- /dev/null
+++ b/runtime/queries/kdl/injections.scm
@@ -0,0 +1,63 @@
+; match/exclude regex with regular string
+(node
+ (identifier) @_section_name
+ (#any-of? @_section_name "window-rule" "layer-rule")
+ children: (node_children
+ (node
+ (identifier) @_node_name
+ (#any-of? @_node_name "match" "exclude")
+ (node_field
+ (prop
+ (identifier) @_prop_name
+ (#any-of? @_prop_name "app-id" "title" "namespace")
+ (value
+ (string
+ (string_fragment) @injection.content
+ (#set! injection.language "regex")
+ )
+ )
+ )
+ )
+ )
+ )
+)
+
+(node
+ (identifier) @_section
+ (#eq? @_section "binds")
+ children: (node_children
+ (node
+ (identifier)
+ children: (node_children
+ (node
+ (identifier) @_action_name
+ (#eq? @_action_name "spawn")
+ (node_field
+ (value
+ (string
+ (string_fragment) @_executable
+ (#eq? @_executable "fish")
+ )
+ )
+ )
+ (node_field
+ (value
+ (string
+ (string_fragment) @_flag
+ (#eq? @_flag "-c")
+ )
+ )
+ )
+ (node_field
+ (value
+ (string
+ (string_fragment) @injection.content
+ (#set! injection.language "fish")
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+)
diff --git a/runtime/queries/kdl/tags.scm b/runtime/queries/kdl/tags.scm
new file mode 100644
index 00000000..ec073a3d
--- /dev/null
+++ b/runtime/queries/kdl/tags.scm
@@ -0,0 +1,3 @@
+(node (identifier) @definition.struct
+ children: _
+)