diff --git a/src/bin/relish.rs b/src/bin/relish.rs index 0df73c9..b367d08 100644 --- a/src/bin/relish.rs +++ b/src/bin/relish.rs @@ -135,24 +135,31 @@ impl Completer for CustomCompleter { } } else { let mut path: PathBuf = Path::new(&tok).to_path_buf(); - if path.is_relative() { + let rel = path.is_relative(); + if rel { path = current_dir_path.join(path); } - if let Ok(npath) = path.canonicalize() { - path = npath; - } - if path.exists() && path.is_dir() { if let Ok(entries) = path.read_dir() { for entry in entries { if let Ok(e) = entry { + let mut path = e.path(); + if rel { + path = path.strip_prefix(current_dir_path.clone()) + .unwrap() + .to_path_buf(); + } + let d = path.is_dir(); + let mut str_path = path.as_os_str() + .to_str() + .expect("inexplicable stringification error") + .to_owned(); + if d { + str_path = str_path + "/"; + } sugg.push(Suggestion { - value: e.path() - .as_os_str() - .to_str() - .expect("bad dir somehow?") - .to_owned() + "/", + value: str_path, description: None, extra: None, span: Span { @@ -178,8 +185,14 @@ impl Completer for CustomCompleter { .to_mut() .as_str() ) { + let mut path = e.path(); + if rel { + path = path.strip_prefix(current_dir_path.clone()) + .unwrap() + .to_path_buf(); + } sugg.push(Suggestion { - value: e.path() + value: path .as_os_str() .to_str() .expect("bad dir somehow?")