From fe9719a1d27939400c466a0d8ef04d8a680018c4 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 11 Aug 2022 23:06:38 -0700 Subject: [PATCH] xmode.marker: adding a better matching paren finder --- basis/xmode/marker/marker.factor | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/basis/xmode/marker/marker.factor b/basis/xmode/marker/marker.factor index 204e108f3f..0fbeb2ef2c 100644 --- a/basis/xmode/marker/marker.factor +++ b/basis/xmode/marker/marker.factor @@ -103,8 +103,17 @@ M: regexp text-matches? : nth-group-start ( n raw -- n ) [ -1 ] 2dip '[ dup [ 1 + _ group-start ] when ] times ; +: matching-paren ( str -- to ) + 0 swap [ + { + { CHAR: ( [ 1 + ] } + { CHAR: ) [ 1 - ] } + [ drop ] + } case dup zero? + ] find drop nip ; + : nth-group ( n raw -- before nth ) - [ nth-group-start ] keep swap cut CHAR: ) over index 1 + head ; + [ nth-group-start ] keep swap cut dup matching-paren 1 + head ; : match-group-regexp ( regexp n -- skip-regexp match-regexp ) [ [ options>> options>string ] [ raw>> ] bi ] dip swap -- 2.34.1