feat(idris): add parser and queries (#7274)

This commit is contained in:
Serhii Khoma 2025-01-16 23:34:37 +07:00 committed by GitHub
parent a67a312e7b
commit 8758abeb4d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 273 additions and 0 deletions

View file

@ -291,6 +291,7 @@ We are looking for maintainers to add more parsers and to write query files for
- [x] [hurl](https://github.com/pfeiferj/tree-sitter-hurl) (maintained by @pfeiferj)
- [x] [hyprlang](https://github.com/luckasRanarison/tree-sitter-hyprlang) (maintained by @luckasRanarison)
- [x] [idl](https://github.com/cathaysia/tree-sitter-idl) (maintained by @cathaysia)
- [x] [idris](https://github.com/kayhide/tree-sitter-idris) (maintained by @srghma)
- [x] [ini](https://github.com/justinmk/tree-sitter-ini) (experimental, maintained by @theHamsta)
- [x] [inko](https://github.com/inko-lang/tree-sitter-inko) (maintained by @yorickpeterse)
- [x] [ipkg](https://github.com/srghma/tree-sitter-ipkg) (maintained by @srghma)

View file

@ -353,6 +353,9 @@
"idl": {
"revision": "86ff7f19747a761dc8ba72f4045fd64aed94ba4c"
},
"idris": {
"revision": "c56a25cf57c68ff929356db25505c1cc4c7820f6"
},
"ini": {
"revision": "962568c9efa71d25720ab42c5d36e222626ef3a6"
},

View file

@ -1051,6 +1051,15 @@ list.idl = {
maintainers = { "@cathaysia" },
}
list.idris = {
install_info = {
url = "https://github.com/kayhide/tree-sitter-idris",
files = { "src/parser.c", "src/scanner.c" },
},
filetype = "idris2",
maintainers = { "@srghma" },
}
list.ini = {
install_info = {
url = "https://github.com/justinmk/tree-sitter-ini",

1
queries/idris/folds.scm Normal file
View file

@ -0,0 +1 @@
(function) @fold

View file

@ -0,0 +1,224 @@
; ------------------------------------------------------------------------------
; Literals and comments
[
(integer)
(quantity)
] @number
(literal
(number)) @number.float
(char) @character
[
(string)
(pat_string)
(triple_quote_string)
] @string
(comment) @comment @spell
((comment) @comment.documentation
(#lua-match? @comment.documentation "^|||"))
(unit) @constant
; more general captures are moved to the top
; before overwritten later by more specific captures
[
(loname)
(caname)
] @variable
; ------------------------------------------------------------------------------
; Punctuation
[
"("
")"
"{"
"@{"
"}"
"["
"[<"
"]"
] @punctuation.bracket
[
(comma)
(colon)
(pat_op)
(tuple_operator)
] @punctuation.delimiter
(pat_name
(loname) @variable.parameter)
; ------------------------------------------------------------------------------
; Types
(signature
(loname) @type)
; ------------------------------------------------------------------------------
; Keywords, operators, imports
[
"if"
"then"
"else"
"case"
"of"
] @keyword.conditional
[
"import"
"module"
"namespace"
"parameters"
] @keyword.import
[
(operator)
(equal)
(wildcard)
"."
"|"
"=>"
"⇒"
"<="
"⇐"
"->"
"→"
"<-"
"←"
"\\"
"`"
] @operator
(qualified_loname
(caname) @module)
(qualified_caname
(caname) @constructor)
(qualified_operator
(caname) @module)
(import
(caname) @module)
(module
(caname) @module)
[
(where)
"rewrite"
"interface"
"implementation"
"using"
"record"
"as"
"do"
(forall)
(fixity)
(impossible)
(with)
(proof)
] @keyword.operator
[
"data"
"let"
"in"
(visibility)
(totality)
] @keyword.modifier
[
"="
"$="
":="
] @operator
(hole) @label
[
(pragma_language)
(pragma_default)
(pragma_builtin)
(pragma_name)
(pragma_ambiguity_depth)
(pragma_auto_implicit_depth)
(pragma_logging)
(pragma_prefix_record_projections)
(pragma_transform)
(pragma_unbound_implicits)
(pragma_auto_lazy)
(pragma_search_timeout)
(pragma_nf_metavar_threshold)
(pragma_cg)
(pragma_allow_overloads)
(pragma_deprecate)
(pragma_inline)
(pragma_noinline)
(pragma_tcinline)
(pragma_hide)
(pragma_unhide)
(pragma_unsafe)
(pragma_spec)
(pragma_foreign)
(pragma_foreign_impl)
(pragma_export)
(pragma_nomangle)
(pragma_hint)
(pragma_defaulthint)
(pragma_globalhint)
(pragma_extern)
(pragma_macro)
(pragma_start)
(pragma_rewrite)
(pragma_pair)
(pragma_integerLit)
(pragma_stringLit)
(pragma_charLit)
(pragma_doubleLit)
(pragma_TTImpLit)
(pragma_declsLit)
(pragma_nameLit)
(pragma_runElab)
(pragma_search)
(pragma_World)
(pragma_MkWorld)
(pragma_syntactic)
] @label
; ------------------------------------------------------------------------------
; Functions and variables
(exp_name
(loname) @function.call)
(constructor
"constructor" @keyword.function
.
(caname) @constructor)
(exp_record_access
field: (_) @variable.member)
(signature
name: (loname) @function)
(function
(lhs
(funvar
subject: [
(loname)
(caname)
] @function)))
(data
name: (data_name) @type)
(interface_head
name: (interface_name) @type)
(implementation_head
(interface_name) @type)

View file

@ -0,0 +1,2 @@
((comment) @injection.content
(#set! injection.language "comment"))

33
queries/idris/locals.scm Normal file
View file

@ -0,0 +1,33 @@
(signature
name: (loname)) @local.definition.var
(signature
name: (caname)) @local.definition.type
(function
(lhs
(funvar
subject: (loname)))) @local.definition.function
(function
(lhs
(funvar
subject: (caname)))) @local.definition.function
(type_var
(loname)) @local.definition.type
(pat_name
(loname)) @local.definition.var
(pat_name
(caname)) @local.definition.var
(exp_name
(loname)) @local.reference
(exp_name
(caname)) @local.reference
(function
(rhs) @local.scope)