mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-17 19:00:02 -04:00
feat: add Cairo
This commit is contained in:
parent
ec7db4ba3f
commit
f45ea99454
7 changed files with 496 additions and 0 deletions
|
|
@ -38,6 +38,9 @@
|
||||||
"c_sharp": {
|
"c_sharp": {
|
||||||
"revision": "1648e21b4f087963abf0101ee5221bb413107b07"
|
"revision": "1648e21b4f087963abf0101ee5221bb413107b07"
|
||||||
},
|
},
|
||||||
|
"cairo": {
|
||||||
|
"revision": "ce7ae19dabb3fc0fb57773f6ac0a40af17adf46f"
|
||||||
|
},
|
||||||
"capnp": {
|
"capnp": {
|
||||||
"revision": "7d5fa4e94d3643ec15750106113be0d40f9fc1bb"
|
"revision": "7d5fa4e94d3643ec15750106113be0d40f9fc1bb"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -179,6 +179,14 @@ list.c_sharp = {
|
||||||
maintainers = { "@Luxed" },
|
maintainers = { "@Luxed" },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list.cairo = {
|
||||||
|
install_info = {
|
||||||
|
url = "https://github.com/amaanq/tree-sitter-cairo",
|
||||||
|
files = { "src/parser.c", "src/scanner.c" },
|
||||||
|
},
|
||||||
|
maintainers = { "@amaanq" },
|
||||||
|
}
|
||||||
|
|
||||||
list.capnp = {
|
list.capnp = {
|
||||||
install_info = {
|
install_info = {
|
||||||
url = "https://github.com/amaanq/tree-sitter-capnp",
|
url = "https://github.com/amaanq/tree-sitter-capnp",
|
||||||
|
|
|
||||||
31
queries/cairo/folds.scm
Normal file
31
queries/cairo/folds.scm
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
[
|
||||||
|
(mod_item)
|
||||||
|
(struct_item)
|
||||||
|
(trait_item)
|
||||||
|
(enum_item)
|
||||||
|
(impl_item)
|
||||||
|
(type_item)
|
||||||
|
|
||||||
|
(use_declaration)
|
||||||
|
(let_declaration)
|
||||||
|
(namespace_definition)
|
||||||
|
|
||||||
|
(arguments)
|
||||||
|
(implicit_arguments)
|
||||||
|
(tuple_type)
|
||||||
|
|
||||||
|
(import_statement)
|
||||||
|
(attribute_statement)
|
||||||
|
(with_statement)
|
||||||
|
(if_statement)
|
||||||
|
|
||||||
|
(function_definition)
|
||||||
|
(struct_definition)
|
||||||
|
(loop_expression)
|
||||||
|
(if_expression)
|
||||||
|
(match_expression)
|
||||||
|
(call_expression)
|
||||||
|
(tuple_expression)
|
||||||
|
|
||||||
|
(attribute_item)
|
||||||
|
] @fold
|
||||||
338
queries/cairo/highlights.scm
Normal file
338
queries/cairo/highlights.scm
Normal file
|
|
@ -0,0 +1,338 @@
|
||||||
|
; Preproc
|
||||||
|
|
||||||
|
[
|
||||||
|
"%builtins"
|
||||||
|
"%lang"
|
||||||
|
] @preproc
|
||||||
|
|
||||||
|
; Includes
|
||||||
|
|
||||||
|
(import_statement [ "from" "import" ] @include module_name: (dotted_name (identifier) @namespace . ))
|
||||||
|
|
||||||
|
[
|
||||||
|
"as"
|
||||||
|
"use"
|
||||||
|
"mod"
|
||||||
|
] @include
|
||||||
|
|
||||||
|
; Variables
|
||||||
|
|
||||||
|
(identifier) @variable
|
||||||
|
|
||||||
|
; Namespaces
|
||||||
|
|
||||||
|
(namespace_definition (identifier) @namespace)
|
||||||
|
|
||||||
|
(mod_item
|
||||||
|
name: (identifier) @namespace)
|
||||||
|
|
||||||
|
(use_list (self) @namespace)
|
||||||
|
|
||||||
|
(scoped_use_list (self) @namespace)
|
||||||
|
|
||||||
|
(scoped_identifier
|
||||||
|
path: (identifier) @namespace)
|
||||||
|
|
||||||
|
(scoped_identifier
|
||||||
|
(scoped_identifier
|
||||||
|
name: (identifier) @namespace))
|
||||||
|
|
||||||
|
(scoped_type_identifier
|
||||||
|
path: (identifier) @namespace)
|
||||||
|
|
||||||
|
((scoped_identifier
|
||||||
|
path: (identifier) @type)
|
||||||
|
(#lua-match? @type "^[A-Z]"))
|
||||||
|
|
||||||
|
((scoped_identifier
|
||||||
|
name: (identifier) @type)
|
||||||
|
(#lua-match? @type "^[A-Z]"))
|
||||||
|
|
||||||
|
((scoped_identifier
|
||||||
|
name: (identifier) @constant)
|
||||||
|
(#lua-match? @constant "^[A-Z][A-Z%d_]*$"))
|
||||||
|
|
||||||
|
((scoped_identifier
|
||||||
|
path: (identifier) @type
|
||||||
|
name: (identifier) @constant)
|
||||||
|
(#lua-match? @type "^[A-Z]")
|
||||||
|
(#lua-match? @constant "^[A-Z]"))
|
||||||
|
|
||||||
|
((scoped_type_identifier
|
||||||
|
path: (identifier) @type
|
||||||
|
name: (type_identifier) @constant)
|
||||||
|
(#lua-match? @type "^[A-Z]")
|
||||||
|
(#lua-match? @constant "^[A-Z]"))
|
||||||
|
|
||||||
|
(scoped_use_list
|
||||||
|
path: (identifier) @namespace)
|
||||||
|
|
||||||
|
(scoped_use_list
|
||||||
|
path: (scoped_identifier
|
||||||
|
(identifier) @namespace))
|
||||||
|
|
||||||
|
(use_list (scoped_identifier (identifier) @namespace . (_)))
|
||||||
|
|
||||||
|
(use_list (identifier) @type (#lua-match? @type "^[A-Z]"))
|
||||||
|
|
||||||
|
(use_as_clause alias: (identifier) @type (#lua-match? @type "^[A-Z]"))
|
||||||
|
|
||||||
|
; Keywords
|
||||||
|
|
||||||
|
[
|
||||||
|
; 0.x
|
||||||
|
"using"
|
||||||
|
"namespace"
|
||||||
|
"struct"
|
||||||
|
"let"
|
||||||
|
"const"
|
||||||
|
"local"
|
||||||
|
"rel"
|
||||||
|
"abs"
|
||||||
|
"dw"
|
||||||
|
"alloc_locals"
|
||||||
|
(inst_ret)
|
||||||
|
"with_attr"
|
||||||
|
"with"
|
||||||
|
"call"
|
||||||
|
"nondet"
|
||||||
|
|
||||||
|
; 1.0
|
||||||
|
"type"
|
||||||
|
"impl"
|
||||||
|
"implicits"
|
||||||
|
"of"
|
||||||
|
"ref"
|
||||||
|
"mut"
|
||||||
|
"trait"
|
||||||
|
"enum"
|
||||||
|
] @keyword
|
||||||
|
|
||||||
|
[
|
||||||
|
"func"
|
||||||
|
"fn"
|
||||||
|
"end"
|
||||||
|
] @keyword.function
|
||||||
|
|
||||||
|
"return" @keyword.return
|
||||||
|
|
||||||
|
[
|
||||||
|
"cast"
|
||||||
|
"new"
|
||||||
|
"and"
|
||||||
|
] @keyword.operator
|
||||||
|
|
||||||
|
[
|
||||||
|
"tempvar"
|
||||||
|
"extern"
|
||||||
|
] @storageclass
|
||||||
|
|
||||||
|
[
|
||||||
|
"if"
|
||||||
|
"else"
|
||||||
|
"match"
|
||||||
|
] @conditional
|
||||||
|
|
||||||
|
[
|
||||||
|
"loop"
|
||||||
|
] @repeat
|
||||||
|
|
||||||
|
[
|
||||||
|
"assert"
|
||||||
|
"static_assert"
|
||||||
|
"nopanic"
|
||||||
|
] @exception
|
||||||
|
|
||||||
|
; Fields
|
||||||
|
|
||||||
|
(implicit_arguments (typed_identifier (identifier) @field))
|
||||||
|
|
||||||
|
(member_expression "." (identifier) @field)
|
||||||
|
|
||||||
|
(call_expression (assignment_expression left: (identifier) @field))
|
||||||
|
|
||||||
|
(tuple_expression (assignment_expression left: (identifier) @field))
|
||||||
|
|
||||||
|
(field_identifier) @field
|
||||||
|
|
||||||
|
(shorthand_field_initializer (identifier) @field)
|
||||||
|
|
||||||
|
; Parameters
|
||||||
|
|
||||||
|
(arguments (typed_identifier (identifier) @parameter))
|
||||||
|
|
||||||
|
(call_expression (tuple_expression (assignment_expression left: (identifier) @parameter)))
|
||||||
|
|
||||||
|
(return_type (tuple_type (named_type . (identifier) @parameter)))
|
||||||
|
|
||||||
|
(parameter (identifier) @parameter)
|
||||||
|
|
||||||
|
; Builtins
|
||||||
|
|
||||||
|
(builtin_directive (identifier) @variable.builtin)
|
||||||
|
(lang_directive (identifier) @variable.builtin)
|
||||||
|
|
||||||
|
[
|
||||||
|
"ap"
|
||||||
|
"fp"
|
||||||
|
(self)
|
||||||
|
] @variable.builtin
|
||||||
|
|
||||||
|
; Functions
|
||||||
|
|
||||||
|
(function_definition "func" (identifier) @function)
|
||||||
|
(function_definition "fn" (identifier) @function)
|
||||||
|
(function_signature "fn" (identifier) @function)
|
||||||
|
(extern_function_statement (identifier) @function)
|
||||||
|
|
||||||
|
(call_expression
|
||||||
|
function: (identifier) @function.call)
|
||||||
|
|
||||||
|
(call_expression
|
||||||
|
function: (scoped_identifier
|
||||||
|
(identifier) @function.call .))
|
||||||
|
|
||||||
|
(call_expression
|
||||||
|
function: (field_expression
|
||||||
|
field: (field_identifier) @function.call))
|
||||||
|
|
||||||
|
[
|
||||||
|
"jmp"
|
||||||
|
] @function.builtin
|
||||||
|
|
||||||
|
; Types
|
||||||
|
|
||||||
|
(struct_definition . (identifier) @type (typed_identifier (identifier) @field)?)
|
||||||
|
|
||||||
|
(named_type (identifier) @type .)
|
||||||
|
|
||||||
|
[
|
||||||
|
(builtin_type)
|
||||||
|
(primitive_type)
|
||||||
|
] @type.builtin
|
||||||
|
|
||||||
|
((identifier) @type
|
||||||
|
(#lua-match? @type "^[A-Z][a-zA-Z0-9_]*$"))
|
||||||
|
|
||||||
|
(type_identifier) @type
|
||||||
|
|
||||||
|
; Constants
|
||||||
|
|
||||||
|
((identifier) @constant
|
||||||
|
(#lua-match? @constant "^[A-Z_][A-Z0-9_]*$"))
|
||||||
|
|
||||||
|
(enum_variant
|
||||||
|
name: (identifier) @constant)
|
||||||
|
|
||||||
|
(call_expression
|
||||||
|
function: (scoped_identifier
|
||||||
|
"::"
|
||||||
|
name: (identifier) @constant)
|
||||||
|
(#lua-match? @constant "^[A-Z]"))
|
||||||
|
|
||||||
|
((match_arm
|
||||||
|
pattern: (match_pattern (identifier) @constant))
|
||||||
|
(#lua-match? @constant "^[A-Z]"))
|
||||||
|
|
||||||
|
((match_arm
|
||||||
|
pattern: (match_pattern
|
||||||
|
(scoped_identifier
|
||||||
|
name: (identifier) @constant)))
|
||||||
|
(#lua-match? @constant "^[A-Z]"))
|
||||||
|
|
||||||
|
((identifier) @constant.builtin
|
||||||
|
(#any-of? @constant.builtin "Some" "None" "Ok" "Err"))
|
||||||
|
|
||||||
|
; Constructors
|
||||||
|
|
||||||
|
(unary_expression "new" (call_expression . (identifier) @constructor))
|
||||||
|
|
||||||
|
((call_expression . (identifier) @constructor)
|
||||||
|
(#lua-match? @constructor "^%u"))
|
||||||
|
|
||||||
|
; Attributes
|
||||||
|
|
||||||
|
(decorator "@" @attribute (identifier) @attribute)
|
||||||
|
|
||||||
|
(attribute_item (identifier) @function.macro)
|
||||||
|
|
||||||
|
(attribute_item (scoped_identifier (identifier) @function.macro .))
|
||||||
|
|
||||||
|
; Labels
|
||||||
|
|
||||||
|
(label . (identifier) @label)
|
||||||
|
|
||||||
|
(inst_jmp_to_label "jmp" . (identifier) @label)
|
||||||
|
|
||||||
|
(inst_jnz_to_label "jmp" . (identifier) @label)
|
||||||
|
|
||||||
|
; Operators
|
||||||
|
|
||||||
|
[
|
||||||
|
"+"
|
||||||
|
"-"
|
||||||
|
"*"
|
||||||
|
"/"
|
||||||
|
"**"
|
||||||
|
"=="
|
||||||
|
"!="
|
||||||
|
"&"
|
||||||
|
"="
|
||||||
|
"++"
|
||||||
|
"+="
|
||||||
|
"@"
|
||||||
|
"!"
|
||||||
|
"~"
|
||||||
|
".."
|
||||||
|
"&&"
|
||||||
|
"||"
|
||||||
|
"^"
|
||||||
|
"<"
|
||||||
|
"<="
|
||||||
|
">"
|
||||||
|
">="
|
||||||
|
"<<"
|
||||||
|
">>"
|
||||||
|
"%"
|
||||||
|
"-="
|
||||||
|
"*="
|
||||||
|
"/="
|
||||||
|
"%="
|
||||||
|
"&="
|
||||||
|
"|="
|
||||||
|
"^="
|
||||||
|
"<<="
|
||||||
|
">>="
|
||||||
|
"?"
|
||||||
|
] @operator
|
||||||
|
|
||||||
|
; Literals
|
||||||
|
|
||||||
|
(number) @number
|
||||||
|
|
||||||
|
(boolean) @boolean
|
||||||
|
|
||||||
|
[
|
||||||
|
(string)
|
||||||
|
(short_string)
|
||||||
|
] @string
|
||||||
|
|
||||||
|
; Punctuation
|
||||||
|
|
||||||
|
(attribute_item "#" @punctuation.special)
|
||||||
|
|
||||||
|
[ "." "," ":" ";" "->" "=>" "::" ] @punctuation.delimiter
|
||||||
|
|
||||||
|
[ "{" "}" "(" ")" "[" "]" "%{" "%}" ] @punctuation.bracket
|
||||||
|
|
||||||
|
(type_parameters [ "<" ">" ] @punctuation.bracket)
|
||||||
|
|
||||||
|
(type_arguments [ "<" ">" ] @punctuation.bracket)
|
||||||
|
|
||||||
|
; Comment
|
||||||
|
|
||||||
|
(comment) @comment @spell
|
||||||
|
|
||||||
|
; Errors
|
||||||
|
|
||||||
|
(ERROR) @error
|
||||||
45
queries/cairo/indents.scm
Normal file
45
queries/cairo/indents.scm
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
[
|
||||||
|
(mod_item)
|
||||||
|
(struct_item)
|
||||||
|
(enum_item)
|
||||||
|
(impl_item)
|
||||||
|
(struct_expression)
|
||||||
|
(match_expression)
|
||||||
|
(tuple_expression)
|
||||||
|
(match_arm)
|
||||||
|
(match_block)
|
||||||
|
(call_expression)
|
||||||
|
(assignment_expression)
|
||||||
|
(arguments)
|
||||||
|
(block)
|
||||||
|
(use_list)
|
||||||
|
(field_declaration_list)
|
||||||
|
(enum_variant_list)
|
||||||
|
(tuple_pattern)
|
||||||
|
] @indent.begin
|
||||||
|
|
||||||
|
(import_statement "(") @indent.begin
|
||||||
|
|
||||||
|
(block "}" @indent.end)
|
||||||
|
(enum_item
|
||||||
|
body: (enum_variant_list "}" @indent.end))
|
||||||
|
(match_expression
|
||||||
|
body: (match_block "}" @indent.end))
|
||||||
|
(mod_item
|
||||||
|
body: (declaration_list "}" @indent.end))
|
||||||
|
(struct_item
|
||||||
|
body: (field_declaration_list "}" @indent.end))
|
||||||
|
(trait_item
|
||||||
|
body: (declaration_list "}" @indent.end))
|
||||||
|
|
||||||
|
[
|
||||||
|
")"
|
||||||
|
"]"
|
||||||
|
"}"
|
||||||
|
] @indent.branch
|
||||||
|
|
||||||
|
[
|
||||||
|
(comment)
|
||||||
|
(string)
|
||||||
|
(short_string)
|
||||||
|
] @indent.ignore
|
||||||
3
queries/cairo/injections.scm
Normal file
3
queries/cairo/injections.scm
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
(python_code) @python
|
||||||
|
|
||||||
|
(comment) @comment
|
||||||
68
queries/cairo/locals.scm
Normal file
68
queries/cairo/locals.scm
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
; References
|
||||||
|
|
||||||
|
(identifier) @reference
|
||||||
|
((type_identifier) @reference
|
||||||
|
(#set! reference.kind "type"))
|
||||||
|
((field_identifier) @reference
|
||||||
|
(#set! reference.kind "field"))
|
||||||
|
|
||||||
|
; Scopes
|
||||||
|
|
||||||
|
[
|
||||||
|
(program)
|
||||||
|
(block)
|
||||||
|
(function_definition)
|
||||||
|
(loop_expression)
|
||||||
|
(if_expression)
|
||||||
|
(match_expression)
|
||||||
|
(match_arm)
|
||||||
|
|
||||||
|
(struct_item)
|
||||||
|
(enum_item)
|
||||||
|
(impl_item)
|
||||||
|
] @scope
|
||||||
|
|
||||||
|
(use_declaration
|
||||||
|
argument: (scoped_identifier
|
||||||
|
name: (identifier) @definition.import))
|
||||||
|
|
||||||
|
(use_as_clause
|
||||||
|
alias: (identifier) @definition.import)
|
||||||
|
|
||||||
|
(use_list
|
||||||
|
(identifier) @definition.import) ; use std::process::{Child, Command, Stdio};
|
||||||
|
|
||||||
|
; Functions
|
||||||
|
|
||||||
|
(function_definition
|
||||||
|
(identifier) @definition.function)
|
||||||
|
|
||||||
|
(function_definition
|
||||||
|
(identifier) @definition.method
|
||||||
|
(parameter (self)))
|
||||||
|
|
||||||
|
; Function with parameters, defines parameters
|
||||||
|
|
||||||
|
(parameter
|
||||||
|
[ (identifier) (self) ] @definition.parameter)
|
||||||
|
|
||||||
|
; Types
|
||||||
|
|
||||||
|
(struct_item
|
||||||
|
name: (type_identifier) @definition.type)
|
||||||
|
|
||||||
|
(constrained_type_parameter
|
||||||
|
left: (type_identifier) @definition.type) ; the P in remove_file<P: AsRef<Path>>(path: P)
|
||||||
|
|
||||||
|
(enum_item
|
||||||
|
name: (type_identifier) @definition.type)
|
||||||
|
|
||||||
|
; Module
|
||||||
|
|
||||||
|
(mod_item
|
||||||
|
name: (identifier) @definition.namespace)
|
||||||
|
|
||||||
|
; Variables
|
||||||
|
|
||||||
|
(assignment_expression
|
||||||
|
left: (identifier) @definition.var)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue