mirror of
https://github.com/nushell/nushell.git
synced 2025-08-16 01:48:16 +02:00
Merge branch 'avoid-double-match' of github.com:ysthakur/nushell into avoid-double-match
This commit is contained in:
@ -61,6 +61,32 @@ fn extern_completer() -> NuCompleter {
|
|||||||
NuCompleter::new(Arc::new(engine), Arc::new(stack))
|
NuCompleter::new(Arc::new(engine), Arc::new(stack))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[fixture]
|
||||||
|
fn completer_strings_with_options() -> NuCompleter {
|
||||||
|
// Create a new engine
|
||||||
|
let (dir, _, mut engine, mut stack) = new_engine();
|
||||||
|
// Add record value as example
|
||||||
|
let record = r#"
|
||||||
|
# To test that the config setting has no effect on the custom completions
|
||||||
|
$env.config.completions.algorithm = "fuzzy"
|
||||||
|
def animals [] {
|
||||||
|
{
|
||||||
|
# Very rare and totally real animals
|
||||||
|
completions: ["Abcdef", "Foo Abcdef", "Acd Bar" ],
|
||||||
|
options: {
|
||||||
|
completion_algorithm: "prefix",
|
||||||
|
positional: false,
|
||||||
|
case_sensitive: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
def my-command [animal: string@animals] { print $animal }"#;
|
||||||
|
assert!(support::merge_input(record.as_bytes(), &mut engine, &mut stack, dir).is_ok());
|
||||||
|
|
||||||
|
// Instantiate a new completer
|
||||||
|
NuCompleter::new(Arc::new(engine), Arc::new(stack))
|
||||||
|
}
|
||||||
|
|
||||||
#[fixture]
|
#[fixture]
|
||||||
fn custom_completer() -> NuCompleter {
|
fn custom_completer() -> NuCompleter {
|
||||||
// Create a new engine
|
// Create a new engine
|
||||||
@ -169,6 +195,20 @@ fn variables_customcompletion_subcommands_with_customcompletion_2(
|
|||||||
match_suggestions(&expected, &suggestions);
|
match_suggestions(&expected, &suggestions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
fn customcompletions_substring_matching(mut completer_strings_with_options: NuCompleter) {
|
||||||
|
let suggestions = completer_strings_with_options.complete("my-command Abcd", 15);
|
||||||
|
let expected: Vec<String> = vec!["Abcdef".into(), "Foo Abcdef".into()];
|
||||||
|
match_suggestions(&expected, &suggestions);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[rstest]
|
||||||
|
fn customcompletions_case_insensitive(mut completer_strings_with_options: NuCompleter) {
|
||||||
|
let suggestions = completer_strings_with_options.complete("my-command foo", 14);
|
||||||
|
let expected: Vec<String> = vec!["Foo Abcdef".into()];
|
||||||
|
match_suggestions(&expected, &suggestions);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn dotnu_completions() {
|
fn dotnu_completions() {
|
||||||
// Create a new engine
|
// Create a new engine
|
||||||
|
@ -860,10 +860,8 @@ fn search_pattern(data: impl Iterator<Item = String>, pat: &str, rev: bool) -> V
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !rev {
|
if rev {
|
||||||
matches.sort();
|
matches.reverse();
|
||||||
} else {
|
|
||||||
matches.sort_by(|a, b| b.cmp(a));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
matches
|
matches
|
||||||
|
Reference in New Issue
Block a user