aboutsummaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorMatthias Q2023-03-03 19:12:37 +0000
committerGitHub2023-03-03 19:12:37 +0000
commit2bd8bc8d8484a4a8852280f16888a819acbfde7a (patch)
tree632193e620db6000f08e42b1ee5f978b0e830eea /runtime
parent5c716af7a2c2fff36080d51be3cb9fa30aa36bc7 (diff)
feat(prql): add prql support (#6126)
Diffstat (limited to 'runtime')
-rw-r--r--runtime/queries/prql/highlights.scm136
-rw-r--r--runtime/queries/prql/injections.scm8
2 files changed, 144 insertions, 0 deletions
diff --git a/runtime/queries/prql/highlights.scm b/runtime/queries/prql/highlights.scm
new file mode 100644
index 00000000..5cfedee4
--- /dev/null
+++ b/runtime/queries/prql/highlights.scm
@@ -0,0 +1,136 @@
+[
+ (keyword_from)
+ (keyword_filter)
+ (keyword_derive)
+ (keyword_group)
+ (keyword_aggregate)
+ (keyword_sort)
+ (keyword_take)
+ (keyword_window)
+ (keyword_join)
+ (keyword_select)
+ (keyword_switch)
+ (keyword_append)
+ (keyword_remove)
+ (keyword_intersect)
+ (keyword_rolling)
+ (keyword_rows)
+ (keyword_expanding)
+ (keyword_let)
+ (keyword_prql)
+ (keyword_from_text)
+] @keyword
+
+(literal) @string
+
+(assignment
+ alias: (field) @variable.other.member)
+
+alias: (identifier) @variable.other.member
+
+(f_string) @string.special
+(s_string) @string.special
+
+(comment) @comment
+
+(keyword_func) @keyword.function
+
+(function_call
+ (identifier) @function)
+
+[
+ "+"
+ "-"
+ "*"
+ "/"
+ "="
+ "=="
+ "<"
+ "<="
+ "!="
+ ">="
+ ">"
+ "->"
+ (bang)
+] @operator
+
+[
+ "("
+ ")"
+ "["
+ "]"
+] @punctuation.bracket
+
+[
+ ","
+ "."
+ (pipe)
+] @punctuation.delimiter
+
+(literal
+ (integer) @constant.numeric.integer)
+
+(integer) @constant.numeric.integer
+
+(literal
+ (decimal_number) @constant.numeric.float)
+
+(decimal_number) @constant.numeric.float
+
+[
+ (keyword_min)
+ (keyword_max)
+ (keyword_count)
+ (keyword_count_distinct)
+ (keyword_average)
+ (keyword_avg)
+ (keyword_sum)
+ (keyword_stddev)
+ (keyword_count)
+] @function
+
+[
+ (keyword_side)
+ (keyword_version)
+ (keyword_target)
+ (keyword_null)
+ (keyword_format)
+] @attribute
+
+(target) @function.builtin
+
+ [
+ (date)
+ (time)
+ (timestamp)
+] @string.special
+
+[
+ (keyword_left)
+ (keyword_inner)
+ (keyword_right)
+ (keyword_full)
+ (keyword_csv)
+ (keyword_json)
+] @function.method
+
+[
+ (keyword_true)
+ (keyword_false)
+] @constant.builtin.boolean
+
+[
+ (keyword_and)
+ (keyword_or)
+] @keyword.operator
+
+(function_definition
+ (keyword_func)
+ name: (identifier) @function)
+
+(parameter
+ (identifier) @variable.parameter)
+
+(variable
+ (keyword_let)
+ name: (identifier) @constant)
diff --git a/runtime/queries/prql/injections.scm b/runtime/queries/prql/injections.scm
new file mode 100644
index 00000000..02a8919f
--- /dev/null
+++ b/runtime/queries/prql/injections.scm
@@ -0,0 +1,8 @@
+((s_string) @injection.content
+ (#set! injection.language "sql"))
+
+(from_text
+ (keyword_from_text)
+ (keyword_json)
+ (literal) @injection.content
+ (#set! injection.language "json"))