@@ -1285,6 +1285,8 @@ If the namespace does not, they are colored the unbound color.
1285
1285
(define tacked-arrows-to-draw '() )
1286
1286
(define arrows-to-draw '() )
1287
1287
1288
+ (define arrow->matching-identifiers-hash (make-hash))
1289
+
1288
1290
(for ([(arrow v) (in-hash tacked-hash-table)])
1289
1291
(when v
1290
1292
(define-values (arrow-text arrow-pos)
@@ -1293,11 +1295,22 @@ If the namespace does not, they are colored the unbound color.
1293
1295
(var-arrow-start-pos-left arrow))]
1294
1296
[(tail-arrow? arrow) (values (tail-arrow-from-text arrow)
1295
1297
(tail-arrow-from-pos arrow))]))
1296
- (define-values (_binders make-identifiers-hash)
1297
- (position->matching-identifiers-hash arrow-text arrow-pos arrow-pos
1298
- #:also-look-backward-one? #f ))
1299
- (define-values (tacked-var-arrow-end-x-min tacked-var-arrow-end-x-max)
1300
- (get-var-arrow-end-x-min-and-max (make-identifiers-hash)))
1298
+ (match-define (cons tacked-var-arrow-end-x-min tacked-var-arrow-end-x-max)
1299
+ (match (hash-ref
1300
+ arrow->matching-identifiers-hash
1301
+ (cons arrow-text arrow-pos)
1302
+ #f )
1303
+ [#f
1304
+ (define-values (_binders make-identifiers-hash)
1305
+ (position->matching-identifiers-hash arrow-text arrow-pos arrow-pos
1306
+ #:also-look-backward-one? #f ))
1307
+ (define-values (tacked-var-arrow-end-x-min tacked-var-arrow-end-x-max)
1308
+ (get-var-arrow-end-x-min-and-max (make-identifiers-hash)))
1309
+ (hash-set! arrow->matching-identifiers-hash (cons arrow-text arrow-pos)
1310
+ (cons tacked-var-arrow-end-x-min tacked-var-arrow-end-x-max))
1311
+ (cons tacked-var-arrow-end-x-min tacked-var-arrow-end-x-max)]
1312
+ [(cons tacked-var-arrow-end-x-min tacked-var-arrow-end-x-max)
1313
+ (cons tacked-var-arrow-end-x-min tacked-var-arrow-end-x-max)]))
1301
1314
1302
1315
(set! tacked-arrows-to-draw
1303
1316
(cons
0 commit comments