summaryrefslogtreecommitdiffstats
path: root/src/core.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2017-07-20 02:44:30 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2017-07-20 02:44:30 +0900
commitc9f16b6430f3b9c9d12ee078e2218e8467c13340 (patch)
treeb0d7e33da2d605696d98da98e1691bf8d89437de /src/core.go
parentbc9d2abdb67639e06f7002b278341fb498b79456 (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.go14
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}
})