aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Hoffmann <mhoffm@posteo.de>2023-07-08 19:44:16 +0200
committerAmaan Qureshi <amaanq12@gmail.com>2023-07-18 03:03:11 -0400
commitb64ea2ec444c27efd8d3bd2377a8b24589954363 (patch)
tree913151ad61c701e387da3d673464e45c03c4b71d
parentfix(menhir): adapt to scanner rewrite (diff)
downloadnvim-treesitter-b64ea2ec444c27efd8d3bd2377a8b24589954363.tar
nvim-treesitter-b64ea2ec444c27efd8d3bd2377a8b24589954363.tar.gz
nvim-treesitter-b64ea2ec444c27efd8d3bd2377a8b24589954363.tar.bz2
nvim-treesitter-b64ea2ec444c27efd8d3bd2377a8b24589954363.tar.lz
nvim-treesitter-b64ea2ec444c27efd8d3bd2377a8b24589954363.tar.xz
nvim-treesitter-b64ea2ec444c27efd8d3bd2377a8b24589954363.tar.zst
nvim-treesitter-b64ea2ec444c27efd8d3bd2377a8b24589954363.zip
feat(promql,yaml): add parser and yaml injections
Signed-off-by: Michael Hoffmann <mhoffm@posteo.de>
-rw-r--r--lockfile.json3
-rw-r--r--lua/nvim-treesitter/parsers.lua9
-rw-r--r--queries/promql/highlights.scm54
-rw-r--r--queries/promql/injections.scm1
-rw-r--r--queries/yaml/injections.scm26
-rw-r--r--tests/query/injections/yaml/promql-on-prometheus-rules.yaml12
6 files changed, 105 insertions, 0 deletions
diff --git a/lockfile.json b/lockfile.json
index ae7d55f00..cef6a9359 100644
--- a/lockfile.json
+++ b/lockfile.json
@@ -395,6 +395,9 @@
"prisma": {
"revision": "eca2596a355b1a9952b4f80f8f9caed300a272b5"
},
+ "promql": {
+ "revision": "655afc4fe6813f38bde087d6493d8fd4920d6d4a"
+ },
"proto": {
"revision": "42d82fa18f8afe59b5fc0b16c207ee4f84cb185f"
},
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index d6b3bdb7f..3f1bc98d8 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -1187,6 +1187,15 @@ list.prisma = {
maintainers = { "@elianiva" },
}
+list.promql = {
+ install_info = {
+ url = "https://github.com/MichaHoffmann/tree-sitter-promql",
+ files = { "src/parser.c" },
+ experimental = true,
+ },
+ maintainers = { "@MichaHoffmann" },
+}
+
list.proto = {
install_info = {
url = "https://github.com/mitchellh/tree-sitter-proto",
diff --git a/queries/promql/highlights.scm b/queries/promql/highlights.scm
new file mode 100644
index 000000000..7c0d1241e
--- /dev/null
+++ b/queries/promql/highlights.scm
@@ -0,0 +1,54 @@
+; highlights.scm
+
+[
+ "*"
+ "/"
+ "%"
+ "+"
+ "-"
+ ">"
+ ">="
+ "<"
+ "<="
+ "="
+ "=~"
+ "!="
+ "!~"
+] @operator
+
+[
+ "and"
+ "unless"
+ "or"
+ "bool"
+] @keyword.operator
+
+[
+ "{"
+ "}"
+ "["
+ "]"
+ "("
+ ")"
+] @punctuation.bracket
+
+(float_literal) @float
+(string_literal) @string
+
+(metric_name) @type
+(range_selection) @text.strong @type
+(subquery_range_selection) @text.strong @type
+
+(label_name) @field
+(label_value) @text.underline @string.regex
+
+(function_name) @function.call
+
+[
+ "by"
+ "without"
+] @function
+
+(comment) @comment @spell
+(ERROR) @error
+
diff --git a/queries/promql/injections.scm b/queries/promql/injections.scm
new file mode 100644
index 000000000..ffdf4f8e6
--- /dev/null
+++ b/queries/promql/injections.scm
@@ -0,0 +1 @@
+((label_value) @regex (#offset! @regex 0 1 0 -1))
diff --git a/queries/yaml/injections.scm b/queries/yaml/injections.scm
index 40727bbd2..a81ca4d06 100644
--- a/queries/yaml/injections.scm
+++ b/queries/yaml/injections.scm
@@ -25,3 +25,29 @@
(block_sequence_item
(block_node
(block_scalar) @bash (#offset! @bash 0 1 0 0))))))
+
+;; Prometheus Alertmanager ("expr")
+(block_mapping_pair
+ key: (flow_node) @_expr (#eq? @_expr "expr")
+ value: (flow_node
+ (plain_scalar) @promql))
+
+(block_mapping_pair
+ key: (flow_node) @_expr (#eq? @_expr "expr")
+ value: (block_node
+ (block_scalar) @promql (#offset! @promql 0 2 0 0)))
+
+(block_mapping_pair
+ key: (flow_node) @_expr (#eq? @_expr "expr")
+ value: (block_node
+ (block_sequence
+ (block_sequence_item
+ (flow_node) @promql))))
+
+(block_mapping_pair
+ key: (flow_node) @_expr (#eq @_expr "expr")
+ value: (block_node
+ (block_sequence
+ (block_sequence_item
+ (block_node
+ (block_scalar) @promql (#offset! @promql 0 2 0 0))))))
diff --git a/tests/query/injections/yaml/promql-on-prometheus-rules.yaml b/tests/query/injections/yaml/promql-on-prometheus-rules.yaml
new file mode 100644
index 000000000..9d3e872ce
--- /dev/null
+++ b/tests/query/injections/yaml/promql-on-prometheus-rules.yaml
@@ -0,0 +1,12 @@
+groups:
+- name: Hardware alerts
+ rules:
+ - alert: Node down
+ expr: up{job="node_exporter"} == 0
+ # ^ promql
+ for: 3m
+ labels:
+ severity: warning
+ annotations:
+ title: Node {{ $labels.instance }} is down
+ description: Failed to scrape {{ $labels.job }} on {{ $labels.instance }} for more than 3 minutes. Node seems down.