mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 06:30:03 +08:00
93 lines
2.1 KiB
Scheme
93 lines
2.1 KiB
Scheme
;; Scopes
|
|
|
|
[
|
|
(if_statement)
|
|
(elif_clause)
|
|
(else_clause)
|
|
(for_statement)
|
|
(while_statement)
|
|
(function_definition)
|
|
(constructor_definition)
|
|
(class_definition)
|
|
(match_statement)
|
|
(pattern_section)
|
|
(lambda)
|
|
(get_body)
|
|
(set_body)
|
|
] @scope
|
|
|
|
;; Parameters
|
|
|
|
(parameters (identifier) @definition.parameter)
|
|
(default_parameter (identifier) @definition.parameter)
|
|
(typed_parameter (identifier) @definition.parameter)
|
|
(typed_default_parameter (identifier) @definition.parameter)
|
|
|
|
;; Signals
|
|
|
|
; Can gdscript 2 signals be considered fields?
|
|
(signal_statement (name) @definition.field)
|
|
|
|
;; Variable Definitions
|
|
|
|
(const_statement (name) @definition.constant)
|
|
; onready and export variations are only properties.
|
|
(variable_statement (name) @definition.var)
|
|
|
|
(setter) @reference
|
|
(getter) @reference
|
|
|
|
;; Function Definition
|
|
|
|
((function_definition (name) @definition.function)
|
|
(#set! "definition.function.scope" "parent"))
|
|
|
|
;; Lambda
|
|
|
|
; lambda names are not accessible and are only for debugging.
|
|
(lambda (name) @definition.function)
|
|
|
|
;; Source
|
|
|
|
(class_name_statement (name) @definition.type)
|
|
|
|
(source (variable_statement (name) @definition.field))
|
|
(source (onready_variable_statement (name) @definition.field))
|
|
(source (export_variable_statement (name) @definition.field))
|
|
|
|
;; Class
|
|
|
|
((class_definition (name) @definition.type)
|
|
(#set! "definition.type.scope" "parent"))
|
|
|
|
(class_definition
|
|
(body (variable_statement (name) @definition.field)))
|
|
(class_definition
|
|
(body (onready_variable_statement (name) @definition.field)))
|
|
(class_definition
|
|
(body (export_variable_statement (name) @definition.field)))
|
|
(class_definition
|
|
(body (signal_statement (name) @definition.field)))
|
|
|
|
; Although a script is also a class, let's only define functions in an inner class as
|
|
; methods.
|
|
((class_definition
|
|
(body (function_definition (name) @definition.method)))
|
|
(#set! "definition.method.scope" "parent"))
|
|
|
|
;; Enum
|
|
|
|
((enum_definition (name) @definition.enum))
|
|
|
|
;; Repeat
|
|
|
|
(for_statement . (identifier) @definition.var)
|
|
|
|
;; Match Statement
|
|
|
|
(pattern_binding (identifier) @definition.var)
|
|
|
|
;; References
|
|
|
|
(identifier) @reference
|