Skip to content

Commit 96ab401

Browse files
committed
adapt to changes in paren-tree
1 parent 1d84adb commit 96ab401

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

gui-lib/framework/private/color.rkt

+24-18
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,10 @@ added get-regions
6464
(define (attribs->invisible attribs)
6565
(cond
6666
[(symbol? attribs)
67-
(values 0 #f)]
67+
(values 0 0)]
6868
[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))]))
7571
(define (attribs->table attribs)
7672
(if (symbol? attribs)
7773
(hasheq 'type attribs)
@@ -432,10 +428,11 @@ added get-regions
432428
len
433429
(make-data attribs new-lexer-mode backup-delta))
434430
#; (show-tree (lexer-state-tokens ls))
435-
(define-values (invisible-count invisible-paren)
431+
(define-values (invisible-opens invisible-closes)
436432
(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)
439436
(cond
440437
[(and (not (send (lexer-state-invalid-tokens ls) is-empty?))
441438
(= (lexer-state-invalid-tokens-start ls)
@@ -890,15 +887,17 @@ added get-regions
890887
(when ls
891888
(define-values (start-f end-f error-f)
892889
(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))
894892
(when (and (not (f-match-false-error ls start-f end-f error-f))
895893
start-f end-f)
896894
(if error-f
897895
(highlight ls start-f end-f caret-pos (and error-f #t))
898896
(highlight-nested-region ls start-f end-f caret-pos)))
899897
(define-values (start-b end-b error-b)
900898
(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))
902901
(when (and start-b end-b)
903902
(if error-b
904903
(highlight ls start-b end-b caret-pos (and error-b #t))
@@ -944,28 +943,35 @@ added get-regions
944943
(define (single-spot-loop start depth)
945944
;; the -1 and +1s in the calls to seq-loop should probably be based on the tokenization,
946945
;; 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))))
947949
(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))
950954
(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))
952956
(let loop ([invisible-paren-count invisible-paren-count]
953957
[end-position outermost-end]
954958
[depth depth])
955959
(when (< depth (vector-length paren-colors))
956960
(define color (vector-ref paren-colors depth))
957961
(cond
958962
[(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)))
960964
(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))))
962966
(unless error-inner
963967
(seq-loop (+ start-inner 1) (- end-inner 1) (+ depth 1))
964968
(seq-loop (+ end-inner 1) (- end-position 1) depth)
965969
(highlight ls start-inner end-inner caret-pos color priority)))]
966970
[else
967971
(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))
969975
(unless error-inner
970976
(seq-loop (+ end-inner 1) (- end-position 1) depth)
971977
(loop (- invisible-paren-count 1) end-inner (+ depth 1))

0 commit comments

Comments
 (0)