beswarm 0.1.2__py3-none-any.whl → 0.1.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. beswarm/__init__.py +0 -1
  2. beswarm/queries/tree-sitter-language-pack/README.md +7 -0
  3. beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +5 -0
  4. beswarm/queries/tree-sitter-language-pack/c-tags.scm +9 -0
  5. beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +16 -0
  6. beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +122 -0
  7. beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +15 -0
  8. beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +26 -0
  9. beswarm/queries/tree-sitter-language-pack/d-tags.scm +26 -0
  10. beswarm/queries/tree-sitter-language-pack/dart-tags.scm +92 -0
  11. beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +5 -0
  12. beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +54 -0
  13. beswarm/queries/tree-sitter-language-pack/elm-tags.scm +19 -0
  14. beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +41 -0
  15. beswarm/queries/tree-sitter-language-pack/go-tags.scm +42 -0
  16. beswarm/queries/tree-sitter-language-pack/java-tags.scm +20 -0
  17. beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +88 -0
  18. beswarm/queries/tree-sitter-language-pack/lua-tags.scm +34 -0
  19. beswarm/queries/tree-sitter-language-pack/pony-tags.scm +39 -0
  20. beswarm/queries/tree-sitter-language-pack/properties-tags.scm +5 -0
  21. beswarm/queries/tree-sitter-language-pack/python-tags.scm +14 -0
  22. beswarm/queries/tree-sitter-language-pack/r-tags.scm +21 -0
  23. beswarm/queries/tree-sitter-language-pack/racket-tags.scm +12 -0
  24. beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +64 -0
  25. beswarm/queries/tree-sitter-language-pack/rust-tags.scm +60 -0
  26. beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +43 -0
  27. beswarm/queries/tree-sitter-language-pack/swift-tags.scm +51 -0
  28. beswarm/queries/tree-sitter-language-pack/udev-tags.scm +20 -0
  29. beswarm/queries/tree-sitter-languages/README.md +23 -0
  30. beswarm/queries/tree-sitter-languages/c-tags.scm +9 -0
  31. beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +46 -0
  32. beswarm/queries/tree-sitter-languages/cpp-tags.scm +15 -0
  33. beswarm/queries/tree-sitter-languages/dart-tags.scm +91 -0
  34. beswarm/queries/tree-sitter-languages/elisp-tags.scm +8 -0
  35. beswarm/queries/tree-sitter-languages/elixir-tags.scm +54 -0
  36. beswarm/queries/tree-sitter-languages/elm-tags.scm +19 -0
  37. beswarm/queries/tree-sitter-languages/go-tags.scm +30 -0
  38. beswarm/queries/tree-sitter-languages/hcl-tags.scm +77 -0
  39. beswarm/queries/tree-sitter-languages/java-tags.scm +20 -0
  40. beswarm/queries/tree-sitter-languages/javascript-tags.scm +88 -0
  41. beswarm/queries/tree-sitter-languages/kotlin-tags.scm +27 -0
  42. beswarm/queries/tree-sitter-languages/ocaml-tags.scm +115 -0
  43. beswarm/queries/tree-sitter-languages/php-tags.scm +26 -0
  44. beswarm/queries/tree-sitter-languages/python-tags.scm +12 -0
  45. beswarm/queries/tree-sitter-languages/ql-tags.scm +26 -0
  46. beswarm/queries/tree-sitter-languages/ruby-tags.scm +64 -0
  47. beswarm/queries/tree-sitter-languages/rust-tags.scm +60 -0
  48. beswarm/queries/tree-sitter-languages/scala-tags.scm +65 -0
  49. beswarm/queries/tree-sitter-languages/typescript-tags.scm +41 -0
  50. beswarm/tools/__init__.py +13 -0
  51. beswarm/tools/edit_file.py +162 -0
  52. beswarm/tools/planner.py +33 -0
  53. beswarm/tools/repomap.py +1289 -0
  54. beswarm/tools/search_arxiv.py +206 -0
  55. beswarm/tools/think.py +40 -0
  56. beswarm/tools/worker.py +118 -0
  57. {beswarm-0.1.2.dist-info → beswarm-0.1.4.dist-info}/METADATA +1 -1
  58. beswarm-0.1.4.dist-info/RECORD +60 -0
  59. beswarm-0.1.2.dist-info/RECORD +0 -5
  60. {beswarm-0.1.2.dist-info → beswarm-0.1.4.dist-info}/WHEEL +0 -0
  61. {beswarm-0.1.2.dist-info → beswarm-0.1.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,39 @@
1
+ ;Class definitions @definition.class
2
+ ;Function definitions @definition.function
3
+ ;Interface definitions @definition.interface
4
+ ;Method definitions @definition.method
5
+ ;Module definitions @definition.module
6
+ ;Function/method calls @reference.call
7
+ ;Class reference @reference.class
8
+ ;Interface implementation @reference.implementation
9
+ (
10
+ (identifier) @reference.class
11
+ (#match? @reference.class "^_*[A-Z][a-zA-Z0-9_]*$")
12
+ )
13
+
14
+ (class_definition (identifier) @name.definition.class) @definition.class
15
+ (actor_definition (identifier) @name.definition.class) @definition.class
16
+ (primitive_definition (identifier) @name.definition.class) @definition.class
17
+ (struct_definition (identifier) @name.definition.class) @definition.class
18
+ (type_alias (identifier) @name.definition.class) @definition.class
19
+
20
+ (trait_definition (identifier) @name.definition.interface) @definition.interface
21
+ (interface_definition (identifier) @name.definition.interface) @definition.interface
22
+
23
+ (constructor (identifier) @name.definition.method) @definition.method
24
+ (method (identifier) @name.definition.method) @definition.method
25
+ (behavior (identifier) @name.definition.method) @definition.method
26
+
27
+ (class_definition (type) @name.reference.implementation) @reference.implementation
28
+ (actor_definition (type) @name.reference.implementation) @reference.implementation
29
+ (primitive_definition (type) @name.reference.implementation) @reference.implementation
30
+ (struct_definition (type) @name.reference.implementation) @reference.implementation
31
+ (type_alias (type) @name.reference.implementation) @reference.implementation
32
+
33
+ ; calls - not catching all possible call cases of callees for capturing the method name
34
+ (call_expression callee: [(identifier) (ffi_identifier)] @name.reference.call) @reference.call
35
+ (call_expression callee: (generic_expression [(identifier) (ffi_identifier)] @name.reference.call)) @reference.call
36
+ (call_expression callee: (member_expression (identifier) @name.reference.call .)) @reference.call
37
+ (call_expression callee: (member_expression (generic_expression [(identifier) (ffi_identifier)] @name.reference.call) .)) @reference.call
38
+ ; TODO: add more possible callee expressions
39
+ (call_expression) @reference.call
@@ -0,0 +1,5 @@
1
+ (property
2
+ (key) @name.definition.property) @definition.property
3
+
4
+ (substitution
5
+ (key) @name.reference.property) @reference.property
@@ -0,0 +1,14 @@
1
+ (module (expression_statement (assignment left: (identifier) @name.definition.constant) @definition.constant))
2
+
3
+ (class_definition
4
+ name: (identifier) @name.definition.class) @definition.class
5
+
6
+ (function_definition
7
+ name: (identifier) @name.definition.function) @definition.function
8
+
9
+ (call
10
+ function: [
11
+ (identifier) @name.reference.call
12
+ (attribute
13
+ attribute: (identifier) @name.reference.call)
14
+ ]) @reference.call
@@ -0,0 +1,21 @@
1
+ (binary_operator
2
+ lhs: (identifier) @name.definition.function
3
+ operator: "<-"
4
+ rhs: (function_definition)
5
+ ) @definition.function
6
+
7
+ (binary_operator
8
+ lhs: (identifier) @name.definition.function
9
+ operator: "="
10
+ rhs: (function_definition)
11
+ ) @definition.function
12
+
13
+ (call
14
+ function: (identifier) @name.reference.call
15
+ ) @reference.call
16
+
17
+ (call
18
+ function: (namespace_operator
19
+ rhs: (identifier) @name.reference.call
20
+ )
21
+ ) @reference.call
@@ -0,0 +1,12 @@
1
+ (list
2
+ .
3
+ (symbol) @reference._define
4
+ (#match? @reference._define "^(define|define/contract)$")
5
+ .
6
+ (list
7
+ .
8
+ (symbol) @name.definition.function) @definition.function)
9
+
10
+ (list
11
+ .
12
+ (symbol) @name.reference.call)
@@ -0,0 +1,64 @@
1
+ ; Method definitions
2
+
3
+ (
4
+ (comment)* @doc
5
+ .
6
+ [
7
+ (method
8
+ name: (_) @name.definition.method) @definition.method
9
+ (singleton_method
10
+ name: (_) @name.definition.method) @definition.method
11
+ ]
12
+ (#strip! @doc "^#\\s*")
13
+ (#select-adjacent! @doc @definition.method)
14
+ )
15
+
16
+ (alias
17
+ name: (_) @name.definition.method) @definition.method
18
+
19
+ (setter
20
+ (identifier) @ignore)
21
+
22
+ ; Class definitions
23
+
24
+ (
25
+ (comment)* @doc
26
+ .
27
+ [
28
+ (class
29
+ name: [
30
+ (constant) @name.definition.class
31
+ (scope_resolution
32
+ name: (_) @name.definition.class)
33
+ ]) @definition.class
34
+ (singleton_class
35
+ value: [
36
+ (constant) @name.definition.class
37
+ (scope_resolution
38
+ name: (_) @name.definition.class)
39
+ ]) @definition.class
40
+ ]
41
+ (#strip! @doc "^#\\s*")
42
+ (#select-adjacent! @doc @definition.class)
43
+ )
44
+
45
+ ; Module definitions
46
+
47
+ (
48
+ (module
49
+ name: [
50
+ (constant) @name.definition.module
51
+ (scope_resolution
52
+ name: (_) @name.definition.module)
53
+ ]) @definition.module
54
+ )
55
+
56
+ ; Calls
57
+
58
+ (call method: (identifier) @name.reference.call) @reference.call
59
+
60
+ (
61
+ [(identifier) (constant)] @name.reference.call @reference.call
62
+ (#is-not? local)
63
+ (#not-match? @name.reference.call "^(lambda|load|require|require_relative|__FILE__|__LINE__)$")
64
+ )
@@ -0,0 +1,60 @@
1
+ ; ADT definitions
2
+
3
+ (struct_item
4
+ name: (type_identifier) @name.definition.class) @definition.class
5
+
6
+ (enum_item
7
+ name: (type_identifier) @name.definition.class) @definition.class
8
+
9
+ (union_item
10
+ name: (type_identifier) @name.definition.class) @definition.class
11
+
12
+ ; type aliases
13
+
14
+ (type_item
15
+ name: (type_identifier) @name.definition.class) @definition.class
16
+
17
+ ; method definitions
18
+
19
+ (declaration_list
20
+ (function_item
21
+ name: (identifier) @name.definition.method) @definition.method)
22
+
23
+ ; function definitions
24
+
25
+ (function_item
26
+ name: (identifier) @name.definition.function) @definition.function
27
+
28
+ ; trait definitions
29
+ (trait_item
30
+ name: (type_identifier) @name.definition.interface) @definition.interface
31
+
32
+ ; module definitions
33
+ (mod_item
34
+ name: (identifier) @name.definition.module) @definition.module
35
+
36
+ ; macro definitions
37
+
38
+ (macro_definition
39
+ name: (identifier) @name.definition.macro) @definition.macro
40
+
41
+ ; references
42
+
43
+ (call_expression
44
+ function: (identifier) @name.reference.call) @reference.call
45
+
46
+ (call_expression
47
+ function: (field_expression
48
+ field: (field_identifier) @name.reference.call)) @reference.call
49
+
50
+ (macro_invocation
51
+ macro: (identifier) @name.reference.call) @reference.call
52
+
53
+ ; implementations
54
+
55
+ (impl_item
56
+ trait: (type_identifier) @name.reference.implementation) @reference.implementation
57
+
58
+ (impl_item
59
+ type: (type_identifier) @name.reference.implementation
60
+ !trait) @reference.implementation
@@ -0,0 +1,43 @@
1
+ ;; Method and Function declarations
2
+ (contract_declaration (_
3
+ (function_definition
4
+ name: (identifier) @name.definition.function) @definition.method))
5
+
6
+ (source_file
7
+ (function_definition
8
+ name: (identifier) @name.definition.function) @definition.function)
9
+
10
+ ;; Contract, struct, enum and interface declarations
11
+ (contract_declaration
12
+ name: (identifier) @name.definition.class) @definition.class
13
+
14
+ (interface_declaration
15
+ name: (identifier) @name.definition.interface) @definition.interface
16
+
17
+ (library_declaration
18
+ name: (identifier) @name.definition.class) @definition.interface
19
+
20
+ (struct_declaration name: (identifier) @name.definition.class) @definition.class
21
+ (enum_declaration name: (identifier) @name.definition.class) @definition.class
22
+ (event_definition name: (identifier) @name.definition.class) @definition.class
23
+
24
+ ;; Function calls
25
+ (call_expression (expression (identifier)) @name.reference.call ) @reference.call
26
+
27
+ (call_expression
28
+ (expression (member_expression
29
+ property: (_) @name.reference.method ))) @reference.call
30
+
31
+ ;; Log emit
32
+ (emit_statement name: (_) @name.reference.class) @reference.class
33
+
34
+
35
+ ;; Inheritance
36
+
37
+ (inheritance_specifier
38
+ ancestor: (user_defined_type (_) @name.reference.class . )) @reference.class
39
+
40
+
41
+ ;; Imports ( note that unknown is not standardised )
42
+ (import_directive
43
+ import_name: (_) @name.reference.module ) @reference.unknown
@@ -0,0 +1,51 @@
1
+ (class_declaration
2
+ name: (type_identifier) @name.definition.class) @definition.class
3
+
4
+ (protocol_declaration
5
+ name: (type_identifier) @name.definition.interface) @definition.interface
6
+
7
+ (class_declaration
8
+ (class_body
9
+ [
10
+ (function_declaration
11
+ name: (simple_identifier) @name.definition.method
12
+ )
13
+ (subscript_declaration
14
+ (parameter (simple_identifier) @name.definition.method)
15
+ )
16
+ (init_declaration "init" @name.definition.method)
17
+ (deinit_declaration "deinit" @name.definition.method)
18
+ ]
19
+ )
20
+ ) @definition.method
21
+
22
+ (protocol_declaration
23
+ (protocol_body
24
+ [
25
+ (protocol_function_declaration
26
+ name: (simple_identifier) @name.definition.method
27
+ )
28
+ (subscript_declaration
29
+ (parameter (simple_identifier) @name.definition.method)
30
+ )
31
+ (init_declaration "init" @name.definition.method)
32
+ ]
33
+ )
34
+ ) @definition.method
35
+
36
+ (class_declaration
37
+ (class_body
38
+ [
39
+ (property_declaration
40
+ (pattern (simple_identifier) @name.definition.property)
41
+ )
42
+ ]
43
+ )
44
+ ) @definition.property
45
+
46
+ (property_declaration
47
+ (pattern (simple_identifier) @name.definition.property)
48
+ ) @definition.property
49
+
50
+ (function_declaration
51
+ name: (simple_identifier) @name.definition.function) @definition.function
@@ -0,0 +1,20 @@
1
+ (assignment
2
+ key: "LABEL"
3
+ (value
4
+ (content) @name.definition.label)) @definition.label
5
+
6
+ (assignment
7
+ key: "GOTO"
8
+ (value
9
+ (content) @name.reference.label)) @reference.label
10
+
11
+ (assignment
12
+ key: "ENV"
13
+ (env_var) @name.definition.variable) @definition.variable
14
+
15
+ (match
16
+ key: "ENV"
17
+ (env_var) @name.reference.variable) @reference.variable
18
+
19
+ (var_sub
20
+ (env_var) @name.reference.variable) @reference.variable
@@ -0,0 +1,23 @@
1
+
2
+ # Credits
3
+
4
+ Aider uses modified versions of the tags.scm files from these open source
5
+ tree-sitter language implementations:
6
+
7
+ * [https://github.com/tree-sitter/tree-sitter-c](https://github.com/tree-sitter/tree-sitter-c) — licensed under the MIT License.
8
+ * [https://github.com/tree-sitter/tree-sitter-c-sharp](https://github.com/tree-sitter/tree-sitter-c-sharp) — licensed under the MIT License.
9
+ * [https://github.com/tree-sitter/tree-sitter-cpp](https://github.com/tree-sitter/tree-sitter-cpp) — licensed under the MIT License.
10
+ * [https://github.com/Wilfred/tree-sitter-elisp](https://github.com/Wilfred/tree-sitter-elisp) — licensed under the MIT License.
11
+ * [https://github.com/elixir-lang/tree-sitter-elixir](https://github.com/elixir-lang/tree-sitter-elixir) — licensed under the Apache License, Version 2.0.
12
+ * [https://github.com/elm-tooling/tree-sitter-elm](https://github.com/elm-tooling/tree-sitter-elm) — licensed under the MIT License.
13
+ * [https://github.com/tree-sitter/tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) — licensed under the MIT License.
14
+ * [https://github.com/tree-sitter/tree-sitter-java](https://github.com/tree-sitter/tree-sitter-java) — licensed under the MIT License.
15
+ * [https://github.com/tree-sitter/tree-sitter-javascript](https://github.com/tree-sitter/tree-sitter-javascript) — licensed under the MIT License.
16
+ * [https://github.com/tree-sitter/tree-sitter-ocaml](https://github.com/tree-sitter/tree-sitter-ocaml) — licensed under the MIT License.
17
+ * [https://github.com/tree-sitter/tree-sitter-php](https://github.com/tree-sitter/tree-sitter-php) — licensed under the MIT License.
18
+ * [https://github.com/tree-sitter/tree-sitter-python](https://github.com/tree-sitter/tree-sitter-python) — licensed under the MIT License.
19
+ * [https://github.com/tree-sitter/tree-sitter-ql](https://github.com/tree-sitter/tree-sitter-ql) — licensed under the MIT License.
20
+ * [https://github.com/r-lib/tree-sitter-r](https://github.com/r-lib/tree-sitter-r) — licensed under the MIT License.
21
+ * [https://github.com/tree-sitter/tree-sitter-ruby](https://github.com/tree-sitter/tree-sitter-ruby) — licensed under the MIT License.
22
+ * [https://github.com/tree-sitter/tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) — licensed under the MIT License.
23
+ * [https://github.com/tree-sitter/tree-sitter-typescript](https://github.com/tree-sitter/tree-sitter-typescript) — licensed under the MIT License.
@@ -0,0 +1,9 @@
1
+ (struct_specifier name: (type_identifier) @name.definition.class body:(_)) @definition.class
2
+
3
+ (declaration type: (union_specifier name: (type_identifier) @name.definition.class)) @definition.class
4
+
5
+ (function_declarator declarator: (identifier) @name.definition.function) @definition.function
6
+
7
+ (type_definition declarator: (type_identifier) @name.definition.type) @definition.type
8
+
9
+ (enum_specifier name: (type_identifier) @name.definition.type) @definition.type
@@ -0,0 +1,46 @@
1
+ (class_declaration
2
+ name: (identifier) @name.definition.class
3
+ ) @definition.class
4
+
5
+ (class_declaration
6
+ bases: (base_list (_) @name.reference.class)
7
+ ) @reference.class
8
+
9
+ (interface_declaration
10
+ name: (identifier) @name.definition.interface
11
+ ) @definition.interface
12
+
13
+ (interface_declaration
14
+ bases: (base_list (_) @name.reference.interface)
15
+ ) @reference.interface
16
+
17
+ (method_declaration
18
+ name: (identifier) @name.definition.method
19
+ ) @definition.method
20
+
21
+ (object_creation_expression
22
+ type: (identifier) @name.reference.class
23
+ ) @reference.class
24
+
25
+ (type_parameter_constraints_clause
26
+ target: (identifier) @name.reference.class
27
+ ) @reference.class
28
+
29
+ (type_constraint
30
+ type: (identifier) @name.reference.class
31
+ ) @reference.class
32
+
33
+ (variable_declaration
34
+ type: (identifier) @name.reference.class
35
+ ) @reference.class
36
+
37
+ (invocation_expression
38
+ function:
39
+ (member_access_expression
40
+ name: (identifier) @name.reference.send
41
+ )
42
+ ) @reference.send
43
+
44
+ (namespace_declaration
45
+ name: (identifier) @name.definition.module
46
+ ) @definition.module
@@ -0,0 +1,15 @@
1
+ (struct_specifier name: (type_identifier) @name.definition.class body:(_)) @definition.class
2
+
3
+ (declaration type: (union_specifier name: (type_identifier) @name.definition.class)) @definition.class
4
+
5
+ (function_declarator declarator: (identifier) @name.definition.function) @definition.function
6
+
7
+ (function_declarator declarator: (field_identifier) @name.definition.function) @definition.function
8
+
9
+ (function_declarator declarator: (qualified_identifier scope: (namespace_identifier) @scope name: (identifier) @name.definition.method)) @definition.method
10
+
11
+ (type_definition declarator: (type_identifier) @name.definition.type) @definition.type
12
+
13
+ (enum_specifier name: (type_identifier) @name.definition.type) @definition.type
14
+
15
+ (class_specifier name: (type_identifier) @name.definition.class) @definition.class
@@ -0,0 +1,91 @@
1
+ (class_definition
2
+ name: (identifier) @name.definition.class) @definition.class
3
+
4
+ (method_signature
5
+ (function_signature)) @definition.method
6
+
7
+ (type_alias
8
+ (type_identifier) @name.definition.type) @definition.type
9
+
10
+ (method_signature
11
+ (getter_signature
12
+ name: (identifier) @name.definition.method)) @definition.method
13
+
14
+ (method_signature
15
+ (setter_signature
16
+ name: (identifier) @name.definition.method)) @definition.method
17
+
18
+ (method_signature
19
+ (function_signature
20
+ name: (identifier) @name.definition.method)) @definition.method
21
+
22
+ (method_signature
23
+ (factory_constructor_signature
24
+ (identifier) @name.definition.method)) @definition.method
25
+
26
+ (method_signature
27
+ (constructor_signature
28
+ name: (identifier) @name.definition.method)) @definition.method
29
+
30
+ (method_signature
31
+ (operator_signature)) @definition.method
32
+
33
+ (method_signature) @definition.method
34
+
35
+ (mixin_declaration
36
+ (mixin)
37
+ (identifier) @name.definition.mixin) @definition.mixin
38
+
39
+ (extension_declaration
40
+ name: (identifier) @name.definition.extension) @definition.extension
41
+
42
+ (enum_declaration
43
+ name: (identifier) @name.definition.enum) @definition.enum
44
+
45
+ (function_signature
46
+ name: (identifier) @name.definition.function) @definition.function
47
+
48
+ (new_expression
49
+ (type_identifier) @name.reference.class) @reference.class
50
+
51
+ (initialized_variable_definition
52
+ name: (identifier)
53
+ value: (identifier) @name.reference.class
54
+ value: (selector
55
+ "!"?
56
+ (argument_part
57
+ (arguments
58
+ (argument)*))?)?) @reference.class
59
+
60
+ (assignment_expression
61
+ left: (assignable_expression
62
+ (identifier)
63
+ (unconditional_assignable_selector
64
+ "."
65
+ (identifier) @name.reference.call))) @reference.call
66
+
67
+ (assignment_expression
68
+ left: (assignable_expression
69
+ (identifier)
70
+ (conditional_assignable_selector
71
+ "?."
72
+ (identifier) @name.reference.call))) @reference.call
73
+
74
+ ((identifier) @name
75
+ (selector
76
+ "!"?
77
+ (conditional_assignable_selector
78
+ "?." (identifier) @name.reference.call)?
79
+ (unconditional_assignable_selector
80
+ "."? (identifier) @name.reference.call)?
81
+ (argument_part
82
+ (arguments
83
+ (argument)*))?)*
84
+ (cascade_section
85
+ (cascade_selector
86
+ (identifier)) @name.reference.call
87
+ (argument_part
88
+ (arguments
89
+ (argument)*))?)?) @reference.call
90
+
91
+
@@ -0,0 +1,8 @@
1
+ ;; defun/defsubst
2
+ (function_definition name: (symbol) @name.definition.function) @definition.function
3
+
4
+ ;; Treat macros as function definitions for the sake of TAGS.
5
+ (macro_definition name: (symbol) @name.definition.function) @definition.function
6
+
7
+ ;; Match function calls
8
+ (list (symbol) @name.reference.function) @reference.function
@@ -0,0 +1,54 @@
1
+ ; Definitions
2
+
3
+ ; * modules and protocols
4
+ (call
5
+ target: (identifier) @ignore
6
+ (arguments (alias) @name.definition.module)
7
+ (#match? @ignore "^(defmodule|defprotocol)$")) @definition.module
8
+
9
+ ; * functions/macros
10
+ (call
11
+ target: (identifier) @ignore
12
+ (arguments
13
+ [
14
+ ; zero-arity functions with no parentheses
15
+ (identifier) @name.definition.function
16
+ ; regular function clause
17
+ (call target: (identifier) @name.definition.function)
18
+ ; function clause with a guard clause
19
+ (binary_operator
20
+ left: (call target: (identifier) @name.definition.function)
21
+ operator: "when")
22
+ ])
23
+ (#match? @ignore "^(def|defp|defdelegate|defguard|defguardp|defmacro|defmacrop|defn|defnp)$")) @definition.function
24
+
25
+ ; References
26
+
27
+ ; ignore calls to kernel/special-forms keywords
28
+ (call
29
+ target: (identifier) @ignore
30
+ (#match? @ignore "^(def|defp|defdelegate|defguard|defguardp|defmacro|defmacrop|defn|defnp|defmodule|defprotocol|defimpl|defstruct|defexception|defoverridable|alias|case|cond|else|for|if|import|quote|raise|receive|require|reraise|super|throw|try|unless|unquote|unquote_splicing|use|with)$"))
31
+
32
+ ; ignore module attributes
33
+ (unary_operator
34
+ operator: "@"
35
+ operand: (call
36
+ target: (identifier) @ignore))
37
+
38
+ ; * function call
39
+ (call
40
+ target: [
41
+ ; local
42
+ (identifier) @name.reference.call
43
+ ; remote
44
+ (dot
45
+ right: (identifier) @name.reference.call)
46
+ ]) @reference.call
47
+
48
+ ; * pipe into function call
49
+ (binary_operator
50
+ operator: "|>"
51
+ right: (identifier) @name.reference.call) @reference.call
52
+
53
+ ; * modules
54
+ (alias) @name.reference.module @reference.module
@@ -0,0 +1,19 @@
1
+ (value_declaration (function_declaration_left (lower_case_identifier) @name.definition.function)) @definition.function
2
+
3
+ (function_call_expr (value_expr (value_qid) @name.reference.function)) @reference.function
4
+ (exposed_value (lower_case_identifier) @name.reference.function) @reference.function
5
+ (type_annotation ((lower_case_identifier) @name.reference.function) (colon)) @reference.function
6
+
7
+ (type_declaration ((upper_case_identifier) @name.definition.type)) @definition.type
8
+
9
+ (type_ref (upper_case_qid (upper_case_identifier) @name.reference.type)) @reference.type
10
+ (exposed_type (upper_case_identifier) @name.reference.type) @reference.type
11
+
12
+ (type_declaration (union_variant (upper_case_identifier) @name.definition.union)) @definition.union
13
+
14
+ (value_expr (upper_case_qid (upper_case_identifier) @name.reference.union)) @reference.union
15
+
16
+
17
+ (module_declaration
18
+ (upper_case_qid (upper_case_identifier)) @name.definition.module
19
+ ) @definition.module
@@ -0,0 +1,30 @@
1
+ (
2
+ (comment)* @doc
3
+ .
4
+ (function_declaration
5
+ name: (identifier) @name.definition.function) @definition.function
6
+ (#strip! @doc "^//\\s*")
7
+ (#set-adjacent! @doc @definition.function)
8
+ )
9
+
10
+ (
11
+ (comment)* @doc
12
+ .
13
+ (method_declaration
14
+ name: (field_identifier) @name.definition.method) @definition.method
15
+ (#strip! @doc "^//\\s*")
16
+ (#set-adjacent! @doc @definition.method)
17
+ )
18
+
19
+ (call_expression
20
+ function: [
21
+ (identifier) @name.reference.call
22
+ (parenthesized_expression (identifier) @name.reference.call)
23
+ (selector_expression field: (field_identifier) @name.reference.call)
24
+ (parenthesized_expression (selector_expression field: (field_identifier) @name.reference.call))
25
+ ]) @reference.call
26
+
27
+ (type_spec
28
+ name: (type_identifier) @name.definition.type) @definition.type
29
+
30
+ (type_identifier) @name.reference.type @reference.type