Skip to content

Commit 041dea1

Browse files
authored
Merge pull request #461 from susliko/tags-queries
feat: Add tags.scm queries
2 parents ed939ed + b6a9155 commit 041dea1

File tree

4 files changed

+120
-1
lines changed

4 files changed

+120
-1
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,11 @@ dist/
3838
*.tar.gz
3939
*.tgz
4040
*.zip
41+
42+
# Scala tooling
43+
.metals
44+
.bsp
45+
.scala-build
46+
47+
# AI assistants
48+
.aider*

queries/tags.scm

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
; Definitions
2+
3+
(package_clause
4+
name: (package_identifier) @name) @definition.module
5+
6+
(trait_definition
7+
name: (identifier) @name) @definition.interface
8+
9+
(enum_definition
10+
name: (identifier) @name) @definition.enum
11+
12+
(simple_enum_case
13+
name: (identifier) @name) @definition.class
14+
15+
(full_enum_case
16+
name: (identifier) @name) @definition.class
17+
18+
(class_definition
19+
name: (identifier) @name) @definition.class
20+
21+
(object_definition
22+
name: (identifier) @name) @definition.object
23+
24+
(function_definition
25+
name: (identifier) @name) @definition.function
26+
27+
(val_definition
28+
pattern: (identifier) @name) @definition.variable
29+
30+
(given_definition
31+
name: (identifier) @name) @definition.variable
32+
33+
(var_definition
34+
pattern: (identifier) @name) @definition.variable
35+
36+
(val_declaration
37+
name: (identifier) @name) @definition.variable
38+
39+
(var_declaration
40+
name: (identifier) @name) @definition.variable
41+
42+
(type_definition
43+
name: (type_identifier) @name) @definition.type
44+
45+
(class_parameter
46+
name: (identifier) @name) @definition.property
47+
48+
; References
49+
50+
(call_expression
51+
(identifier) @name) @reference.call
52+
53+
(instance_expression
54+
(type_identifier) @name) @reference.interface
55+
56+
(instance_expression
57+
(generic_type
58+
(type_identifier) @name)) @reference.interface
59+
60+
(extends_clause
61+
(type_identifier) @name) @reference.class
62+
63+
(extends_clause
64+
(generic_type
65+
(type_identifier) @name)) @reference.class
66+

test/tags/basics.scala

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.example
2+
// ^definition.module
3+
4+
enum Color:
5+
// ^definition.enum
6+
case Red
7+
// ^definition.class
8+
case Green
9+
// ^definition.class
10+
case Yellow
11+
// ^definition.class
12+
13+
trait Fruit:
14+
// ^definition.interface
15+
val color: Color
16+
// ^definition.variable
17+
18+
object Fruit:
19+
// ^definition.object
20+
case object Banana extends Fruit {
21+
// ^definition.object
22+
// ^reference.class
23+
val color = Color.Yellow
24+
// ^definition.variable
25+
}
26+
case class Apple(c: Color.Red | Color.Green) extends Fruit {
27+
// ^definition.class
28+
// ^definition.property
29+
// ^reference.class
30+
val color = c
31+
// ^definition.variable
32+
}
33+
34+
given show: Show[Fruit] = new Show[Fruit] { }
35+
// ^definition.variable
36+
// ^reference.interface
37+
38+
def color(fruit: Fruit): String = ???
39+
// ^definition.function
40+
41+
var flag: Boolean = true
42+
// ^definition.variable
43+
44+

tree-sitter.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"sbt"
1111
],
1212
"highlights": "queries/highlights.scm",
13-
"locals": "queries/locals.scm"
13+
"locals": "queries/locals.scm",
14+
"tags": "queries/tags.scm"
1415
}
1516
],
1617
"metadata": {

0 commit comments

Comments
 (0)