aboutsummaryrefslogtreecommitdiffstats
path: root/src/completion.rs
diff options
context:
space:
mode:
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,
});
}
}