aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--queries/lua/locals.scm45
1 files changed, 45 insertions, 0 deletions
diff --git a/queries/lua/locals.scm b/queries/lua/locals.scm
new file mode 100644
index 000000000..a7b15d1e5
--- /dev/null
+++ b/queries/lua/locals.scm
@@ -0,0 +1,45 @@
+;;; DECLARATIONS AND SCOPES
+
+;; Variable and field declarations
+((variable_declarator
+ (identifier) @definition)
+ (set! kind "v"))
+
+((variable_declarator
+ (field_expression object:(*) @definition.associated (property_identifier) @definition))
+ (set! kind "v"))
+
+;; Parameters
+((local_function
+ (parameters (identifier) @definition))
+ (set! kind "v"))
+((function
+ (parameters (identifier) @definition))
+ (set! kind "v"))
+
+;; Function definitions
+;; Functions definitions creates both a definition and a new scope
+((function
+ (function_name_field
+ object: (identifier) @definition.associated
+ (property_identifier) @definition)) @scope
+ (set! kind "m"))
+
+((function
+ (function_name (identifier) @definition)) @scope
+ (set! kind "f"))
+
+((local_function
+ (identifier) @definition) @scope
+ (set! kind "f"))
+
+((if_statement) @scope)
+((for_in_statement) @scope)
+((repeat_statement) @scope)
+;; Loops
+((loop_expression
+ (identifier) @definition)
+ (set! kind "v"))
+
+;;; REFERENCES
+((identifier) @reference)