on master help sign in
Sort themes, language & files by score & then name (#2675)
d8abd1eMichael Jones
helix-term/src/ui/mod.rs+12−3
@@ -257,7 +257,9 @@ pub mod completers {
257 })
257 })
258 .collect();
258 .collect();
259
259
260− matches.sort_unstable_by_key(|(_file, score)| Reverse(*score));
260+ matches.sort_unstable_by(|(name1, score1), (name2, score2)| {
261+ (Reverse(*score1), name1).cmp(&(Reverse(*score2), name2))
262+ });
261 names = matches.into_iter().map(|(name, _)| ((0..), name)).collect();
263 names = matches.into_iter().map(|(name, _)| ((0..), name)).collect();
262
264
263 names
265 names
@@ -312,7 +314,9 @@ pub mod completers {
312 })
314 })
313 .collect();
315 .collect();
314
316
315− matches.sort_unstable_by_key(|(_language, score)| Reverse(*score));
317+ matches.sort_unstable_by(|(language1, score1), (language2, score2)| {
318+ (Reverse(*score1), language1).cmp(&(Reverse(*score2), language2))
319+ });
316
320
317 matches
321 matches
318 .into_iter()
322 .into_iter()
@@ -428,13 +432,18 @@ pub mod completers {
428
432
429 let range = (input.len().saturating_sub(file_name.len()))..;
433 let range = (input.len().saturating_sub(file_name.len()))..;
430
434
431− matches.sort_unstable_by_key(|(_file, score)| Reverse(*score));
435+ matches.sort_unstable_by(|(file1, score1), (file2, score2)| {
436+ (Reverse(*score1), file1).cmp(&(Reverse(*score2), file2))
437+ });
438+
432 files = matches
439 files = matches
433 .into_iter()
440 .into_iter()
434 .map(|(file, _)| (range.clone(), file))
441 .map(|(file, _)| (range.clone(), file))
435 .collect();
442 .collect();
436
443
437 // TODO: complete to longest common match
444 // TODO: complete to longest common match
445+ } else {
446+ files.sort_unstable_by(|(_, path1), (_, path2)| path1.cmp(path2));
438 }
447 }
439
448
440 files
449 files