From ba0935c71f5507958056201ddad2fc48674a586d Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Mon, 13 Jan 2025 12:45:01 +0900 Subject: Fix change-nth * Proper clean-up of caches * Force rerender list after the action --- src/pattern.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/pattern.go') diff --git a/src/pattern.go b/src/pattern.go index 11bed5f9..9a386280 100644 --- a/src/pattern.go +++ b/src/pattern.go @@ -393,12 +393,24 @@ func (p *Pattern) extendedMatch(item *Item, withPos bool, slab *util.Slab) ([]Of func (p *Pattern) transformInput(item *Item) []Token { if item.transformed != nil { - return *item.transformed + transformed := *item.transformed + if len(transformed.nth) == len(p.nth) { + same := true + for idx, rangeItem := range transformed.nth { + if rangeItem != p.nth[idx] { + same = false + break + } + } + if same { + return transformed.tokens + } + } } tokens := Tokenize(item.text.ToString(), p.delimiter) ret := Transform(tokens, p.nth) - item.transformed = &ret + item.transformed = &transformed{p.nth, ret} return ret } -- cgit v1.2.3