diff --git a/crates/nu-cli/src/completions/completion_common.rs b/crates/nu-cli/src/completions/completion_common.rs index c40a57527b..3b9313ad37 100644 --- a/crates/nu-cli/src/completions/completion_common.rs +++ b/crates/nu-cli/src/completions/completion_common.rs @@ -98,7 +98,7 @@ fn complete_rec( } // For https://github.com/nushell/nushell/issues/13204 - if isdir && options.match_algorithm == MatchAlgorithm::Prefix { + if options.match_algorithm == MatchAlgorithm::Prefix { let exact_match = if options.case_sensitive { entry_name.eq(base) } else { diff --git a/crates/nu-cli/tests/completions/mod.rs b/crates/nu-cli/tests/completions/mod.rs index 10a207b88c..efd561f3aa 100644 --- a/crates/nu-cli/tests/completions/mod.rs +++ b/crates/nu-cli/tests/completions/mod.rs @@ -2224,6 +2224,16 @@ fn exact_match() { &vec![file(dir.join("partial").join("hello.txt")).as_str()], &suggestions, ); + + let target_dir = format!("open {}", file(dir.join("partial").join("hello"))); // No trailing slash + let suggestions = completer.complete(&target_dir, target_dir.len()); + + // Despite no trailing slash, since it's an exact match, only 'partial/hello.txt' should be suggested, not + // 'partial-a/hello' and stuff. See issue #14794 for details. + match_suggestions( + &vec![file(dir.join("partial").join("hello.txt")).as_str()], + &suggestions, + ); } #[ignore = "was reverted, still needs fixing"]