aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJonas Maier <>2026-03-10 17:06:43 +0100
committerJonas Maier <>2026-03-10 17:06:43 +0100
commitf4867b2164201c8edcb4c59b41107c1cd880a513 (patch)
treef8a0b758d45b9feb3d192c57521ce970a1453f51 /src
parentfb443270b14ad4d404f6b401f83b323a9769e667 (diff)
downloadpish-f4867b2164201c8edcb4c59b41107c1cd880a513.tar.gz
sorted completion
Diffstat (limited to 'src')
-rw-r--r--src/completion.rs7
-rw-r--r--src/main.rs4
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;