diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2015-02-26 01:42:15 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2015-02-26 01:42:15 +0900 |
| commit | c1aa5c5f3380315621d30d99b258667775b0fad3 (patch) | |
| tree | 5bfbff2ba5ad7ce1cb8d914106a91bf2cc2939e7 /src/item.go | |
| parent | 4a1752d3fc7f069b0f8afb12ed625acb6fd2aee2 (diff) | |
| download | fzf-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.go | 27 |
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 } |
