feat: smart case completion in cd paths (#910)

Co-authored-by: sxyazi <sxyazi@gmail.com>
This commit is contained in:
Nguyễn Đức Toàn 2024-04-14 22:33:10 +07:00 committed by sxyazi
parent f442ae2adf
commit 64c5e85457
No known key found for this signature in database

View file

@ -26,10 +26,12 @@ impl From<Cmd> for Opt {
impl Completion {
fn match_candidates(word: &str, cache: &[String]) -> Vec<String> {
let smart = word.chars().all(|c| c.is_lowercase());
let flow = cache.iter().try_fold(
(Vec::with_capacity(LIMIT), Vec::with_capacity(LIMIT)),
|(mut prefixed, mut fuzzy), s| {
if s.starts_with(word) {
if (smart && s.to_lowercase().starts_with(word)) || (!smart && s.starts_with(word)) {
if s != word {
prefixed.push(s);
if prefixed.len() >= LIMIT {