aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/brightscript
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-12 09:54:30 -0600
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit692b051b09935653befdb8f7ba8afdb640adf17b (patch)
tree167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/brightscript
parentfeat(c-family): inherit injections (diff)
downloadnvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst
nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/brightscript')
-rw-r--r--runtime/queries/brightscript/folds.scm8
-rw-r--r--runtime/queries/brightscript/highlights.scm177
-rw-r--r--runtime/queries/brightscript/indents.scm39
-rw-r--r--runtime/queries/brightscript/injections.scm2
4 files changed, 226 insertions, 0 deletions
diff --git a/runtime/queries/brightscript/folds.scm b/runtime/queries/brightscript/folds.scm
new file mode 100644
index 000000000..56b7d575b
--- /dev/null
+++ b/runtime/queries/brightscript/folds.scm
@@ -0,0 +1,8 @@
+[
+ (function_statement)
+ (sub_statement)
+ (while_statement)
+ (for_statement)
+ (if_statement)
+ (try_statement)
+] @fold
diff --git a/runtime/queries/brightscript/highlights.scm b/runtime/queries/brightscript/highlights.scm
new file mode 100644
index 000000000..5758f565b
--- /dev/null
+++ b/runtime/queries/brightscript/highlights.scm
@@ -0,0 +1,177 @@
+; Identifiers
+(identifier) @variable
+
+; Function declaration
+(function_statement
+ name: (identifier) @function)
+
+; Sub declaration
+(sub_statement
+ name: (identifier) @function)
+
+[
+ (sub_start)
+ (function_start)
+ (end_sub)
+ (end_function)
+] @keyword.function
+
+; Parameters
+(parameter
+ name: (identifier) @variable.parameter)
+
+; Types
+(type_specifier) @type
+
+; Variables
+; Base variable in variable declarator (immediate child of prefix_exp)
+(variable_declarator
+ (prefix_exp
+ (identifier) @variable
+ (#not-has-ancestor? @variable prefix_exp)))
+
+; Properties in variable declarator
+(variable_declarator
+ (prefix_exp)
+ (identifier) @property)
+
+(multiplicative_expression
+ operator: (_) @keyword.operator)
+
+(logical_not_expression
+ operator: (_) @keyword.operator)
+
+(logical_expression
+ operator: (_) @keyword.operator)
+
+; Property access
+; First identifier in a chain (base variable)
+(prefix_exp
+ .
+ (identifier) @variable
+ (#not-has-ancestor? @variable prefix_exp))
+
+; All other identifiers in a chain (properties)
+(prefix_exp
+ (prefix_exp)
+ (identifier) @property)
+
+; Function calls
+(function_call
+ function: (prefix_exp
+ (identifier) @function.call))
+
+; Statements
+[
+ (if_start)
+ (else)
+ (else_if)
+ (end_if)
+ (then)
+ (conditional_compl_end_if)
+] @keyword.conditional
+
+[
+ (for_start)
+ (while_start)
+ (for_each)
+ (for_in)
+ (for_to)
+ (for_step)
+ (end_for)
+ (end_while)
+ (exit_while_statement)
+ (exit_for_statement)
+] @keyword.repeat
+
+; Statements
+[
+ (try_start)
+ (try_catch)
+ (throw)
+ (end_try)
+] @keyword.exception
+
+(return) @keyword.return
+
+(print) @function.builtin
+
+(constant) @constant
+
+; Operators
+[
+ "="
+ "<>"
+ "<"
+ "<="
+ ">"
+ ">="
+ "+"
+ "-"
+ "*"
+ "/"
+] @operator
+
+; Literals
+(boolean) @boolean
+
+(number) @number
+
+(string) @string
+
+(invalid) @constant.builtin
+
+; Comments
+(comment) @comment @spell
+
+; Punctuation
+[
+ "("
+ ")"
+ "["
+ "]"
+ "{"
+ "}"
+ "?["
+] @punctuation.bracket
+
+[
+ "."
+ ","
+ "?."
+] @punctuation.delimiter
+
+; Special highlights for library statements
+(library_statement) @keyword.import
+
+(library_statement
+ path: (string) @module)
+
+; Array and associative array literals
+(array) @constructor
+
+(assoc_array) @constructor
+
+(assoc_array_element
+ key: (identifier) @property)
+
+; Increment/decrement operators
+[
+ (prefix_increment_expression)
+ (prefix_decrement_expression)
+ (postfix_increment_expression)
+ (postfix_decrement_expression)
+] @operator
+
+; Comparison operators
+(comparison_expression
+ [
+ "="
+ "<>"
+ "<"
+ "<="
+ ">"
+ ">="
+ ] @operator)
+
+(as) @keyword.operator
diff --git a/runtime/queries/brightscript/indents.scm b/runtime/queries/brightscript/indents.scm
new file mode 100644
index 000000000..e54bf52c1
--- /dev/null
+++ b/runtime/queries/brightscript/indents.scm
@@ -0,0 +1,39 @@
+; Start indentation for block-level constructs
+[
+ (sub_statement)
+ (function_statement)
+ (annonymous_sub)
+ (annonymous_function)
+ (conditional_compl)
+ (multi_line_if)
+ (for_statement)
+ (while_statement)
+ (try_statement)
+ (array)
+ (assoc_array)
+] @indent.begin
+
+; End indentation for all end statements
+[
+ (end_sub)
+ (end_function)
+ (end_if)
+ (end_for)
+ (end_while)
+ (end_try)
+ (conditional_compl_end_if)
+ "]"
+ "}"
+] @indent.branch @indent.end
+
+; Handle branching constructs
+[
+ (else_if_clause)
+ (else_clause)
+ (conditional_compl_else_if_clause)
+ (conditional_compl_else_clause)
+ (catch_clause)
+] @indent.branch
+
+; Ignore comments for indentation
+(comment) @indent.ignore
diff --git a/runtime/queries/brightscript/injections.scm b/runtime/queries/brightscript/injections.scm
new file mode 100644
index 000000000..2f0e58eb6
--- /dev/null
+++ b/runtime/queries/brightscript/injections.scm
@@ -0,0 +1,2 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))