aboutsummaryrefslogtreecommitdiffstats
path: root/queries/ocaml
diff options
context:
space:
mode:
authorPieter Goetschalckx <pieter@gtschlckx.be>2020-09-21 02:11:46 +0200
committerStephan Seitz <stephan.lauf@yahoo.de>2020-09-21 08:54:30 +0200
commita8c8de13ae3b3cb2864afc37895e4eecc5280fcc (patch)
treef20bb017117c1abdf237c7b624ea62983b2959ee /queries/ocaml
parentImprove OCaml highlights (diff)
downloadnvim-treesitter-a8c8de13ae3b3cb2864afc37895e4eecc5280fcc.tar
nvim-treesitter-a8c8de13ae3b3cb2864afc37895e4eecc5280fcc.tar.gz
nvim-treesitter-a8c8de13ae3b3cb2864afc37895e4eecc5280fcc.tar.bz2
nvim-treesitter-a8c8de13ae3b3cb2864afc37895e4eecc5280fcc.tar.lz
nvim-treesitter-a8c8de13ae3b3cb2864afc37895e4eecc5280fcc.tar.xz
nvim-treesitter-a8c8de13ae3b3cb2864afc37895e4eecc5280fcc.tar.zst
nvim-treesitter-a8c8de13ae3b3cb2864afc37895e4eecc5280fcc.zip
Improve OCaml locals
Diffstat (limited to 'queries/ocaml')
-rw-r--r--queries/ocaml/locals.scm61
1 files changed, 58 insertions, 3 deletions
diff --git a/queries/ocaml/locals.scm b/queries/ocaml/locals.scm
index ec5ab928e..9321ced2e 100644
--- a/queries/ocaml/locals.scm
+++ b/queries/ocaml/locals.scm
@@ -2,21 +2,76 @@
;-------
[
+ (compilation_unit)
+ (structure)
+ (signature)
+ (module_binding)
+ (functor)
(let_binding)
+ (match_case)
(class_binding)
(class_function)
(method_definition)
+ (let_expression)
(fun_expression)
- (match_case)
(for_expression)
+ (let_class_expression)
+ (object_expression)
+ (attribute_payload)
] @scope
; Definitions
;------------
-(value_pattern) @definition
+(value_pattern) @definition.var
+
+(let_binding
+ pattern: (value_name) @definition.var
+ (set! definition.var.scope "parent"))
+
+(let_binding
+ pattern: (tuple_pattern (value_name) @definition.var)
+ (set! definition.var.scope "parent"))
+
+(let_binding
+ pattern: (record_pattern (field_pattern (value_name) @definition.var))
+ (set! definition.var.scope "parent"))
+
+(external (value_name) @definition.var)
+
+(type_binding (type_constructor) @definition.type)
+
+(abstract_type (type_constructor) @definition.type)
+
+(method_definition (method_name) @definition.method)
+
+(module_binding
+ (module_name) @definition.namespace
+ (set! definition.namespace.scope "parent"))
+
+(module_parameter (module_name) @definition.namespace)
+
+(module_type_definition (module_type_name) @definition.type)
; References
;------------
-(value_name) @reference
+(value_path .
+ (value_name) @reference
+ (set! reference.kind "var"))
+
+(type_constructor_path .
+ (type_constructor) @reference
+ (set! reference.kind "type"))
+
+(method_invocation
+ (method_name) @reference
+ (set! reference.kind "method"))
+
+(module_path .
+ (module_name) @reference
+ (set! reference.kind "type"))
+
+(module_type_path .
+ (module_type_name) @reference
+ (set! reference.kind "type"))