detached a46eff5

refactor(palette): order matches through fuzzy.Less only

commit
a46eff596b6394379ccbceeb070bb9bd2e2243fd
author
brice · · 2026-10-08 20:07 UTC
parent
3bd98ac
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +6 -2
M internal/usecase/palette/fuzzy.go +6 -2
@@ -38,8 +38,12 @@ func Fuzzy(results []Result, query string) []Match {
3838 }
3939 sort.SliceStable(out, func(i, j int) bool {
4040 a, b := out[i], out[j]
41- if a.rank != b.rank || a.span != b.span || a.first != b.first {
42- return fuzzy.Less(a.rank, fuzzy.Score{Span: a.span, First: a.first}, b.rank, fuzzy.Score{Span: b.span, First: b.first})
41+ aScore, bScore := fuzzy.Score{Span: a.span, First: a.first}, fuzzy.Score{Span: b.span, First: b.first}
42+ if fuzzy.Less(a.rank, aScore, b.rank, bScore) {
43+ return true
44+ }
45+ if fuzzy.Less(b.rank, bScore, a.rank, aScore) {
46+ return false
4347 }
4448 if a.Result.Kind() != b.Result.Kind() {
4549 return a.Result.Kind() < b.Result.Kind()
@@ -38,8 +38,12 @@ func Fuzzy(results []Result, query string) []Match {
38 }38 }
39 sort.SliceStable(out, func(i, j int) bool {39 sort.SliceStable(out, func(i, j int) bool {
40 a, b := out[i], out[j]40 a, b := out[i], out[j]
41- if a.rank != b.rank || a.span != b.span || a.first != b.first {41+ aScore, bScore := fuzzy.Score{Span: a.span, First: a.first}, fuzzy.Score{Span: b.span, First: b.first}
42- return fuzzy.Less(a.rank, fuzzy.Score{Span: a.span, First: a.first}, b.rank, fuzzy.Score{Span: b.span, First: b.first})42+ if fuzzy.Less(a.rank, aScore, b.rank, bScore) {
43+ return true
44+ }
45+ if fuzzy.Less(b.rank, bScore, a.rank, aScore) {
46+ return false
43 }47 }
44 if a.Result.Kind() != b.Result.Kind() {48 if a.Result.Kind() != b.Result.Kind() {
45 return a.Result.Kind() < b.Result.Kind()49 return a.Result.Kind() < b.Result.Kind()

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 12

Tags 11

↑↓ moveenter openesc close