aboutsummaryrefslogtreecommitdiffstats
path: root/queries/matlab
diff options
context:
space:
mode:
authorÁlan Crístoffer <acristoffers@startmail.com>2023-06-12 10:15:41 +0200
committerChristian Clason <c.clason@uni-graz.at>2023-06-19 09:43:25 +0200
commitdf3f47a5087f13db53bb96ff05a867b75acc4297 (patch)
tree6694f4a96024a139c0070bdfa1bd7f2eb748c098 /queries/matlab
parentUpdate parsers: comment, luadoc (diff)
downloadnvim-treesitter-df3f47a5087f13db53bb96ff05a867b75acc4297.tar
nvim-treesitter-df3f47a5087f13db53bb96ff05a867b75acc4297.tar.gz
nvim-treesitter-df3f47a5087f13db53bb96ff05a867b75acc4297.tar.bz2
nvim-treesitter-df3f47a5087f13db53bb96ff05a867b75acc4297.tar.lz
nvim-treesitter-df3f47a5087f13db53bb96ff05a867b75acc4297.tar.xz
nvim-treesitter-df3f47a5087f13db53bb96ff05a867b75acc4297.tar.zst
nvim-treesitter-df3f47a5087f13db53bb96ff05a867b75acc4297.zip
feat(matlab)!: replace parser
Diffstat (limited to 'queries/matlab')
-rw-r--r--queries/matlab/folds.scm27
-rw-r--r--queries/matlab/highlights.scm171
-rw-r--r--queries/matlab/indents.scm35
-rw-r--r--queries/matlab/locals.scm20
4 files changed, 175 insertions, 78 deletions
diff --git a/queries/matlab/folds.scm b/queries/matlab/folds.scm
index 063a99b5a..dad9ea177 100644
--- a/queries/matlab/folds.scm
+++ b/queries/matlab/folds.scm
@@ -1,16 +1,11 @@
-[
- (function_definition)
-
- (if_statement)
-
- (for_statement)
- (while_statement)
-
- (switch_statement)
- (case_statement)
-
- (otherwise_statement)
-
- (try_statement)
- (catch_statement)
-] @fold
+[(if_statement)
+ (for_statement)
+ (while_statement)
+ (switch_statement)
+ (try_statement)
+ (function_definition)
+ (class_definition)
+ (enumeration)
+ (events)
+ (methods)
+ (properties)] @fold
diff --git a/queries/matlab/highlights.scm b/queries/matlab/highlights.scm
index bad9dbdf4..8dd10d6a9 100644
--- a/queries/matlab/highlights.scm
+++ b/queries/matlab/highlights.scm
@@ -1,106 +1,153 @@
-; Functions
-
-(function_definition
- function_name: (identifier) @function
- (end) @keyword.function)
+; Includes
-(parameter_list (identifier) @parameter)
+((command_name) @include
+ (#eq? @include "import"))
; Keywords
-((identifier) @keyword
- (#eq? @keyword "end"))
-
-(function_keyword) @keyword.function
-
[
- "return"
-] @keyword.return
+ "arguments"
+ "classdef"
+ "end"
+ "enumeration"
+ "events"
+ "global"
+ "methods"
+ "persistent"
+ "properties"
+] @keyword
; Conditionals
-[
- "if"
- "elseif"
- "else"
- "switch"
- "case"
- "otherwise"
-] @conditional
-
-(if_statement (end) @conditional)
-(switch_statement (end) @conditional)
+(if_statement [ "if" "end" ] @conditional)
+(elseif_clause "elseif" @conditional)
+(else_clause "else" @conditional)
+(switch_statement [ "switch" "end" ] @conditional)
+(case_clause "case" @conditional)
+(otherwise_clause "otherwise" @conditional)
+(break_statement) @conditional
; Repeats
-[
- "for"
- "while"
- "break"
- "continue"
-] @repeat
-
-(for_statement (end) @repeat)
-(while_statement (end) @repeat)
+(for_statement [ "for" "parfor" "end" ] @repeat)
+(while_statement [ "while" "end" ] @repeat)
+(continue_statement) @repeat
; Exceptions
-[
- "try"
- "catch"
-] @exception
+(try_statement [ "try" "end" ] @exception)
+(catch_clause "catch" @exception)
-(try_statement (end) @exception)
+; Variables
-; Punctuation
+(identifier) @variable
-[
- ","
- ";"
- ":"
-] @punctuation.delimiter
+; Constants
+
+(events (identifier) @constant)
+(attribute (identifier) @constant)
+
+"~" @constant.builtin
+
+; Fields/Properties
+
+(field_expression field: (identifier) @field)
+
+(superclass "." (identifier) @property)
+
+(property_name "." (identifier) @property)
+
+(property name: (identifier) @property)
+
+; Types
+
+(class_definition name: (identifier) @type)
+
+(attributes (identifier) @constant)
+
+(enum . (identifier) @type)
+
+((identifier) @type
+ (#lua-match? @type "^_*[A-Z][a-zA-Z0-9_]+$"))
+
+; Functions
+
+(function_definition
+ "function" @keyword.function
+ name: (identifier) @function
+ [ "end" "endfunction" ]? @keyword.function)
+
+(function_signature name: (identifier) @function)
+
+(function_call
+ name: (identifier) @function.call)
-[ "{" "}" ] @punctuation.bracket
+(handle_operator (identifier) @function)
-[ "[" "]" ] @punctuation.bracket
+(validation_functions (identifier) @function)
-[ "(" ")" ] @punctuation.bracket
+(command (command_name) @function.call)
+(command_argument) @parameter
+
+(return_statement) @keyword.return
+
+; Parameters
+
+(function_arguments (identifier) @parameter)
+
+; Punctuation
+
+[ ";" "," "." ] @punctuation.delimiter
+
+[ "(" ")" "[" "]" "{" "}" ] @punctuation.bracket
; Operators
-[
- ">"
- "<"
- "=="
- "<="
- ">="
- "=<"
- "=>"
- "~="
+[
+ "+"
+ ".+"
+ "-"
+ ".*"
"*"
".*"
"/"
- "\\"
"./"
+ "\\"
+ ".\\"
"^"
".^"
- "+"
+ "'"
+ ".'"
+ "|"
+ "&"
+ "?"
+ "@"
+ "<"
+ "<="
+ ">"
+ ">="
+ "=="
+ "~="
"="
"&&"
"||"
+ ":"
] @operator
; Literals
-(number) @number
-
(string) @string
-[ "true" "false" ] @boolean
+(escape_sequence) @string.escape
+(formatting_sequence) @string.special
+
+(number) @number
+
+(boolean) @boolean
; Comments
-(comment) @comment @spell
+[ (comment) (line_continuation) ] @comment @spell
; Errors
diff --git a/queries/matlab/indents.scm b/queries/matlab/indents.scm
new file mode 100644
index 000000000..46889a280
--- /dev/null
+++ b/queries/matlab/indents.scm
@@ -0,0 +1,35 @@
+"end" @indent.end @indent.branch
+
+[
+ (if_statement)
+ (for_statement)
+ (while_statement)
+ (switch_statement)
+ (try_statement)
+ (function_definition)
+ (class_definition)
+ (enumeration)
+ (events)
+ (methods)
+ (properties)
+] @indent.begin
+
+[
+ "elseif"
+ "else"
+ "case"
+ "otherwise"
+ "catch"
+] @indent.branch
+
+((matrix (row) @indent.align)
+ (#set! indent.open_delimiter "[")
+ (#set! indent.close_delimiter "]"))
+((cell (row) @indent.align)
+ (#set! indent.open_delimiter "{")
+ (#set! indent.close_delimiter "}"))
+((parenthesis) @indent.align
+ (#set! indent.open_delimiter "(")
+ (#set! indent.close_delimiter ")"))
+
+(comment) @indent.auto
diff --git a/queries/matlab/locals.scm b/queries/matlab/locals.scm
new file mode 100644
index 000000000..a6ca6aeb5
--- /dev/null
+++ b/queries/matlab/locals.scm
@@ -0,0 +1,20 @@
+; References
+
+(identifier) @reference
+
+; Definitions
+
+(function_definition
+ name: (identifier) @definition.function
+ (function_arguments
+ (identifier)* @definition.parameter
+ ("," (identifier) @definition.parameter)*)?) @scope
+
+(assignment left: (identifier) @definition.var)
+(multioutput_variable (identifier) @definition.var)
+
+(iterator . (identifier) @definition.var)
+(lambda (arguments (identifier) @definition.parameter))
+(global_operator (identifier) @definition.var)
+(persistent_operator (identifier) @definition.var)
+(catch_clause (identifier) @definition)