summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2015-01-11 01:15:44 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2015-01-11 01:30:17 +0900
commit4f4031443365659de357ad4da15af8b5e3245137 (patch)
treebe1535a7c4ebd6a5e3e0e0898c06aa4d1c5190dd /src
parentf670f4f076867d6876bcbc832a9b464bbe4f8f68 (diff)
downloadfzf-4f4031443365659de357ad4da15af8b5e3245137.tar.gz
Fix --with-nth option when query is non-empty
Diffstat (limited to 'src')
-rw-r--r--src/pattern.go14
-rw-r--r--src/pattern_test.go18
2 files changed, 26 insertions, 6 deletions
diff --git a/src/pattern.go b/src/pattern.go
index 7b294253..93dbaf99 100644
--- a/src/pattern.go
+++ b/src/pattern.go
@@ -235,9 +235,10 @@ func (p *Pattern) fuzzyMatch(chunk *Chunk) []*Item {
input := p.prepareInput(item)
if sidx, eidx := p.iter(FuzzyMatch, input, p.text); sidx >= 0 {
matches = append(matches, &Item{
- text: item.text,
- offsets: []Offset{Offset{int32(sidx), int32(eidx)}},
- rank: Rank{0, 0, item.rank.index}})
+ text: item.text,
+ origText: item.origText,
+ offsets: []Offset{Offset{int32(sidx), int32(eidx)}},
+ rank: Rank{0, 0, item.rank.index}})
}
}
return matches
@@ -262,9 +263,10 @@ func (p *Pattern) extendedMatch(chunk *Chunk) []*Item {
}
if len(offsets) == len(p.terms) {
matches = append(matches, &Item{
- text: item.text,
- offsets: offsets,
- rank: Rank{0, 0, item.rank.index}})
+ text: item.text,
+ origText: item.origText,
+ offsets: offsets,
+ rank: Rank{0, 0, item.rank.index}})
}
}
return matches
diff --git a/src/pattern_test.go b/src/pattern_test.go
index a1ce6263..a776e301 100644
--- a/src/pattern_test.go
+++ b/src/pattern_test.go
@@ -85,3 +85,21 @@ func TestCaseSensitivity(t *testing.T) {
t.Error("Invalid case conversion")
}
}
+
+func TestOrigText(t *testing.T) {
+ strptr := func(str string) *string {
+ return &str
+ }
+
+ pattern := BuildPattern(MODE_EXTENDED, CASE_SMART, []Range{}, nil, []rune("jg"))
+ for _, fun := range []func(*Chunk) []*Item{pattern.fuzzyMatch, pattern.extendedMatch} {
+ chunk := Chunk{
+ &Item{text: strptr("junegunn"), origText: strptr("junegunn.choi")},
+ }
+ matches := fun(&chunk)
+ if *matches[0].text != "junegunn" || *matches[0].origText != "junegunn.choi" ||
+ matches[0].offsets[0][0] != 0 || matches[0].offsets[0][1] != 5 {
+ t.Error("Invalid match result", matches)
+ }
+ }
+}