@@ -64,14 +64,10 @@ added get-regions
64
64
(define (attribs->invisible attribs)
65
65
(cond
66
66
[(symbol? attribs)
67
- (values 0 #f )]
67
+ (values 0 0 )]
68
68
[else
69
- (define open-count (hash-ref attribs 'invisible-open-count #f ))
70
- (define close-count (hash-ref attribs 'invisible-close-count #f ))
71
- (cond
72
- [open-count (values open-count invisible-open)]
73
- [close-count (values close-count invisible-close)]
74
- [else (values 0 #f )])]))
69
+ (values (hash-ref attribs 'invisible-open-count 0 )
70
+ (hash-ref attribs 'invisible-close-count 0 ))]))
75
71
(define (attribs->table attribs)
76
72
(if (symbol? attribs)
77
73
(hasheq 'type attribs)
@@ -432,10 +428,11 @@ added get-regions
432
428
len
433
429
(make-data attribs new-lexer-mode backup-delta))
434
430
#; (show-tree (lexer-state-tokens ls))
435
- (define-values (invisible-count invisible-paren )
431
+ (define-values (invisible-opens invisible-closes )
436
432
(attribs->invisible attribs))
437
- (send (lexer-state-parens ls) add-token (or paren invisible-paren) len
438
- #:invisible invisible-count)
433
+ (send (lexer-state-parens ls) add-token paren len
434
+ #:invisible-opens invisible-opens
435
+ #:invisible-closes invisible-closes)
439
436
(cond
440
437
[(and (not (send (lexer-state-invalid-tokens ls) is-empty?))
441
438
(= (lexer-state-invalid-tokens-start ls)
@@ -890,15 +887,17 @@ added get-regions
890
887
(when ls
891
888
(define-values (start-f end-f error-f)
892
889
(send (lexer-state-parens ls) match-forward
893
- (- caret-pos (lexer-state-start-pos ls))))
890
+ (- caret-pos (lexer-state-start-pos ls))
891
+ #:invisible 0 ))
894
892
(when (and (not (f-match-false-error ls start-f end-f error-f))
895
893
start-f end-f)
896
894
(if error-f
897
895
(highlight ls start-f end-f caret-pos (and error-f #t ))
898
896
(highlight-nested-region ls start-f end-f caret-pos)))
899
897
(define-values (start-b end-b error-b)
900
898
(send (lexer-state-parens ls) match-backward
901
- (- caret-pos (lexer-state-start-pos ls))))
899
+ (- caret-pos (lexer-state-start-pos ls))
900
+ #:invisible 0 ))
902
901
(when (and start-b end-b)
903
902
(if error-b
904
903
(highlight ls start-b end-b caret-pos (and error-b #t ))
@@ -944,28 +943,35 @@ added get-regions
944
943
(define (single-spot-loop start depth)
945
944
;; the -1 and +1s in the calls to seq-loop should probably be based on the tokenization,
946
945
;; as more positions can be skipped in general
946
+ (define-values (invisible-paren-opens invisible-paren-closes)
947
+ (send (lexer-state-parens ls) get-invisible-count
948
+ (- start (lexer-state-start-pos ls))))
947
949
(cond
948
- [(send (lexer-state-parens ls) is-open-pos? start #:invisible-ok? #t )
949
- (define invisible-paren-count (send (lexer-state-parens ls) get-invisible-count start))
950
+ [(or (not (zero? invisible-paren-opens))
951
+ (not (zero? invisible-paren-closes))
952
+ (send (lexer-state-parens ls) is-open-pos? (- start (lexer-state-start-pos ls))))
953
+ (define invisible-paren-count (+ invisible-paren-opens invisible-paren-closes))
950
954
(define-values (outermost-start outermost-end error-outermost)
951
- (send (lexer-state-parens ls) match-forward start #:invisible invisible-paren-count))
955
+ (send (lexer-state-parens ls) match-forward (- start (lexer-state-start-pos ls)) #:invisible invisible-paren-count))
952
956
(let loop ([invisible-paren-count invisible-paren-count]
953
957
[end-position outermost-end]
954
958
[depth depth])
955
959
(when (< depth (vector-length paren-colors))
956
960
(define color (vector-ref paren-colors depth))
957
961
(cond
958
962
[(zero? invisible-paren-count)
959
- (when (send (lexer-state-parens ls) is-open-pos? start #:invisible-ok? #f )
963
+ (when (send (lexer-state-parens ls) is-open-pos? (- start (lexer-state-start-pos ls)) )
960
964
(define-values (start-inner end-inner error-inner)
961
- (send (lexer-state-parens ls) match-forward start))
965
+ (send (lexer-state-parens ls) match-forward (- start (lexer-state-start-pos ls)) ))
962
966
(unless error-inner
963
967
(seq-loop (+ start-inner 1 ) (- end-inner 1 ) (+ depth 1 ))
964
968
(seq-loop (+ end-inner 1 ) (- end-position 1 ) depth)
965
969
(highlight ls start-inner end-inner caret-pos color priority)))]
966
970
[else
967
971
(define-values (start-inner end-inner error-inner)
968
- (send (lexer-state-parens ls) match-forward start #:invisible invisible-paren-count))
972
+ (send (lexer-state-parens ls) match-forward
973
+ (- start (lexer-state-start-pos ls))
974
+ #:invisible invisible-paren-count))
969
975
(unless error-inner
970
976
(seq-loop (+ end-inner 1 ) (- end-position 1 ) depth)
971
977
(loop (- invisible-paren-count 1 ) end-inner (+ depth 1 ))
0 commit comments