summaryrefslogtreecommitdiff
path: root/src/item.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2015-02-26 01:42:15 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2015-02-26 01:42:15 +0900
commitc1aa5c5f3380315621d30d99b258667775b0fad3 (patch)
tree5bfbff2ba5ad7ce1cb8d914106a91bf2cc2939e7 /src/item.go
parent4a1752d3fc7f069b0f8afb12ed625acb6fd2aee2 (diff)
downloadfzf-c1aa5c5f3380315621d30d99b258667775b0fad3.tar.gz
Add --tac option and reverse display order of --no-sort
DISCLAIMER: This is a backward incompatible change
Diffstat (limited to 'src/item.go')
-rw-r--r--src/item.go27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/item.go b/src/item.go
index 4cbd3f98..2b8a9d13 100644
--- a/src/item.go
+++ b/src/item.go
@@ -87,10 +87,28 @@ func (a ByRelevance) Less(i, j int) bool {
irank := a[i].Rank(true)
jrank := a[j].Rank(true)
- return compareRanks(irank, jrank)
+ return compareRanks(irank, jrank, false)
}
-func compareRanks(irank Rank, jrank Rank) bool {
+// ByRelevanceTac is for sorting Items
+type ByRelevanceTac []*Item
+
+func (a ByRelevanceTac) Len() int {
+ return len(a)
+}
+
+func (a ByRelevanceTac) Swap(i, j int) {
+ a[i], a[j] = a[j], a[i]
+}
+
+func (a ByRelevanceTac) Less(i, j int) bool {
+ irank := a[i].Rank(true)
+ jrank := a[j].Rank(true)
+
+ return compareRanks(irank, jrank, true)
+}
+
+func compareRanks(irank Rank, jrank Rank, tac bool) bool {
if irank.matchlen < jrank.matchlen {
return true
} else if irank.matchlen > jrank.matchlen {
@@ -103,8 +121,5 @@ func compareRanks(irank Rank, jrank Rank) bool {
return false
}
- if irank.index <= jrank.index {
- return true
- }
- return false
+ return (irank.index <= jrank.index) != tac
}