diff options
| -rw-r--r-- | src/completion.rs | 7 | ||||
| -rw-r--r-- | src/main.rs | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/completion.rs b/src/completion.rs index d10aabd..80a0ebb 100644 --- a/src/completion.rs +++ b/src/completion.rs @@ -115,7 +115,12 @@ pub fn populate_path_cache(session: Arc<Mutex<Session>>) { pub fn command_completion(session: Arc<Mutex<Session>>, prefix: BString) -> Vec<Suggestion> { let se = session.lock().unwrap(); let mut out = Vec::new(); - for fun in se.funs.keys().chain(se.builtins.keys()).chain(se.path_cache.binaries.keys()) { + for fun in se + .funs + .keys() + .chain(se.builtins.keys()) + .chain(se.path_cache.binaries.keys()) + { if fun.starts_with(&prefix) { out.push(Suggestion { display: fun.to_vec(), diff --git a/src/main.rs b/src/main.rs index 7a8d864..2be6562 100644 --- a/src/main.rs +++ b/src/main.rs @@ -361,7 +361,7 @@ fn event_loop() { &mut Executor::new_for_completion(session.clone()), ); - let suggestions = match comp.kind { + let mut suggestions = match comp.kind { parse::CompletionKind::Command => { completion::command_completion(session.clone(), comp.partial) } @@ -371,6 +371,8 @@ fn event_loop() { } parse::CompletionKind::None => continue, }; + + suggestions.sort_by(|x, y| x.delta.cmp(&y.delta)); if suggestions.len() == 0 { continue; |
