@@ -2,8 +2,8 @@ import type { Position, TextDocument } from "@cursorless/common";
2
2
import type { QueryMatch } from "./QueryCapture" ;
3
3
4
4
export class Cache {
5
- private documentUri : string = "" ;
6
5
private documentVersion : number = - 1 ;
6
+ private documentUri : string = "" ;
7
7
private documentLanguageId : string = "" ;
8
8
private startPosition : Position | undefined ;
9
9
private endPosition : Position | undefined ;
@@ -24,11 +24,11 @@ export class Cache {
24
24
endPosition : Position | undefined ,
25
25
) {
26
26
return (
27
- this . documentUri === document . uri . toString ( ) &&
28
27
this . documentVersion === document . version &&
28
+ this . documentUri === document . uri . toString ( ) &&
29
29
this . documentLanguageId === document . languageId &&
30
- this . startPosition === startPosition &&
31
- this . endPosition === endPosition
30
+ positionsEqual ( this . startPosition , startPosition ) &&
31
+ positionsEqual ( this . endPosition , endPosition )
32
32
) ;
33
33
}
34
34
@@ -38,8 +38,8 @@ export class Cache {
38
38
endPosition : Position | undefined ,
39
39
matches : QueryMatch [ ] ,
40
40
) {
41
- this . documentUri = document . uri . toString ( ) ;
42
41
this . documentVersion = document . version ;
42
+ this . documentUri = document . uri . toString ( ) ;
43
43
this . documentLanguageId = document . languageId ;
44
44
this . startPosition = startPosition ;
45
45
this . endPosition = endPosition ;
@@ -51,4 +51,11 @@ export class Cache {
51
51
}
52
52
}
53
53
54
+ function positionsEqual ( a : Position | undefined , b : Position | undefined ) {
55
+ if ( a == null || b == null ) {
56
+ return a === b ;
57
+ }
58
+ return a . isEqual ( b ) ;
59
+ }
60
+
54
61
export const treeSitterQueryCache = new Cache ( ) ;
0 commit comments