aboutsummaryrefslogtreecommitdiffstats
path: root/src/completion.rs
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-03-06 12:51:07 +0100
committerJonas Maier <jonas@x77.dev>2026-03-06 12:51:07 +0100
commite568ccb94011146288b4bd63952be741b7500df5 (patch)
tree97d229e2e89a1347c648fd6100b0c87dd925b0f4 /src/completion.rs
parentfb80e9c1cd4c2dcbb2d2ba1e2be8c7e19b9f0ce1 (diff)
downloadpish-e568ccb94011146288b4bd63952be741b7500df5.tar.gz
completion somewhat works
Diffstat (limited to 'src/completion.rs')
-rw-r--r--src/completion.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/completion.rs b/src/completion.rs
index cb030a1..407a397 100644
--- a/src/completion.rs
+++ b/src/completion.rs
@@ -3,7 +3,7 @@ use std::fs;
pub struct Suggestion {
pub display: BString,
- full: BString,
+ pub delta: BString,
}
fn _path_completion(mut prefix: BString) -> io::Result<Vec<Suggestion>> {
@@ -27,9 +27,16 @@ fn _path_completion(mut prefix: BString) -> io::Result<Vec<Suggestion>> {
let entry = entry?;
let name = entry.file_name().as_bytes().to_vec();
if name.starts_with(&partial_entry) {
+ let mut delta = name[partial_entry.len()..].to_vec();
+
+ let is_dir = entry.metadata().map(|m| m.is_dir()).unwrap_or(false);
+ if is_dir {
+ delta.push(b'/');
+ }
+
sugs.push(Suggestion {
display: name,
- full: entry.path().as_os_str().as_bytes().to_vec(),
+ delta,
});
}
}