From 03fcda2fe14a357107746ba5963a32b861c0533a Mon Sep 17 00:00:00 2001 From: gwenn <gtreguier@gmail.com> Date: Thu, 25 Aug 2016 18:40:10 +0200 Subject: [PATCH] Fix longest_common_prefix --- src/completion.rs | 6 +++++- src/lib.rs | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/completion.rs b/src/completion.rs index ad0a93f0..16448c52 100644 --- a/src/completion.rs +++ b/src/completion.rs @@ -171,7 +171,7 @@ pub fn longest_common_prefix(candidates: &[String]) -> Option<&str> { let b1 = candidates[i].as_bytes(); let b2 = candidates[i + 1].as_bytes(); if b1.len() <= longest_common_prefix || b2.len() <= longest_common_prefix || - b1[i] != b2[i] { + b1[longest_common_prefix] != b2[longest_common_prefix] { break 'o; } } @@ -227,5 +227,9 @@ mod tests { let lcp = super::longest_common_prefix(&candidates); assert!(lcp.is_none()); } + + let candidates = vec![String::from("fée"), String::from("fête")]; + let lcp = super::longest_common_prefix(&candidates); + assert_eq!(Some("f"), lcp); } } diff --git a/src/lib.rs b/src/lib.rs index ebcabdd4..b115ed9b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -600,6 +600,13 @@ fn complete_line<R: Read>(rdr: &mut tty::RawReader<R>, return Ok(None); } } + // we can't complete any further, wait for second tab + let key = try!(rdr.next_key(false)); + // if any character other than tab, pass it to the main loop + if key != KeyPress::Tab { + return Ok(Some(key)) + } + // we got a second tab, maybe show list of possible completions // TODO ... Ok(None) } else { -- GitLab