diff --git a/src/lib/shell/completer.rs b/src/lib/shell/completer.rs index 8ac651c7c8288f9a3d646c428e88ebf1d003c842..43e604ed17c7d6680496cb3eeedfe22ba462159f 100644 --- a/src/lib/shell/completer.rs +++ b/src/lib/shell/completer.rs @@ -122,7 +122,10 @@ where for element in split_start.skip(skip) { string.extend_from_slice(element.as_bytes()); - string.extend_from_slice(b"*/"); + + if element != ".." && element != "." { + string.extend_from_slice(b"*/"); + } } string.pop(); // pop out the last '/' character @@ -131,10 +134,11 @@ where let globs = glob(string).ok().and_then(|completions| { let mut completions = completions .filter_map(Result::ok) - .map(|x| x.to_string_lossy().into_owned()); + .map(|x| x.to_string_lossy().into_owned()) + .peekable(); - if let Some(first) = completions.next() { - Some(iter::once(first).chain(completions)) + if completions.peek().is_some() { + Some(completions) } else { None }