diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2017-07-20 02:44:30 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2017-07-20 02:44:30 +0900 |
commit | c9f16b6430f3b9c9d12ee078e2218e8467c13340 (patch) | |
tree | b0d7e33da2d605696d98da98e1691bf8d89437de /src/core.go | |
parent | bc9d2abdb67639e06f7002b278341fb498b79456 (diff) |
Avoid unconditionally storsing input as runes
When --with-nth is used, fzf used to preprocess each line and store the
result as rune array, which was wasteful if the line only contains ascii
characters.
Diffstat (limited to 'src/core.go')
-rw-r--r-- | src/core.go | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/core.go b/src/core.go index aa425109..3e60934a 100644 --- a/src/core.go +++ b/src/core.go @@ -63,9 +63,6 @@ func Run(opts *Options, revision string) { ansiProcessor := func(data []byte) (util.Chars, *[]ansiOffset) { return util.ToChars(data), nil } - ansiProcessorRunes := func(data []rune) (util.Chars, *[]ansiOffset) { - return util.RunesToChars(data), nil - } if opts.Ansi { if opts.Theme != nil { var state *ansiState @@ -82,9 +79,6 @@ func Run(opts *Options, revision string) { return util.RunesToChars([]rune(trimmed)), nil } } - ansiProcessorRunes = func(data []rune) (util.Chars, *[]ansiOffset) { - return ansiProcessor([]byte(string(data))) - } } // Chunk list @@ -103,15 +97,15 @@ func Run(opts *Options, revision string) { }) } else { chunkList = NewChunkList(func(data []byte, index int) Item { - tokens := Tokenize(util.ToChars(data), opts.Delimiter) + tokens := Tokenize(string(data), opts.Delimiter) trans := Transform(tokens, opts.WithNth) + transformed := joinTokens(trans) if len(header) < opts.HeaderLines { - header = append(header, string(joinTokens(trans))) + header = append(header, transformed) eventBox.Set(EvtHeader, header) return nilItem } - textRunes := joinTokens(trans) - trimmed, colors := ansiProcessorRunes(textRunes) + trimmed, colors := ansiProcessor([]byte(transformed)) trimmed.Index = int32(index) return Item{text: trimmed, colors: colors, origText: &data} }) |