diff --git a/cli/src/cli/complete_word.rs b/cli/src/cli/complete_word.rs index 115a7676..19578b70 100644 --- a/cli/src/cli/complete_word.rs +++ b/cli/src/cli/complete_word.rs @@ -59,8 +59,8 @@ impl CompleteWord { } } "zsh" => { + let c = zsh_escape(&c); if any_descriptions { - let c = zsh_escape(&c); let description = zsh_escape(&description); println!("{c}:{description}") } else { diff --git a/cli/tests/complete_word.rs b/cli/tests/complete_word.rs index 63c0a2f5..293cf3f2 100644 --- a/cli/tests/complete_word.rs +++ b/cli/tests/complete_word.rs @@ -302,6 +302,13 @@ fn complete_word_zsh_escapes_parens_and_brackets() { ); } +#[test] +fn complete_word_zsh_escapes_colons_without_descriptions() { + let mut c = cmd("zsh-colons-without-descriptions.usage.kdl", Some("zsh")); + c.args(["--", "run", ""]); + c.assert().success().stdout("test\\:git\ntest\\:nvim\n"); +} + fn cmd(example: &str, shell: Option<&str>) -> Command { let mut cmd = Command::new(cargo::cargo_bin!("usage")); cmd.args(["cw"]); diff --git a/examples/zsh-colons-without-descriptions.usage.kdl b/examples/zsh-colons-without-descriptions.usage.kdl new file mode 100644 index 00000000..d4e9cf3c --- /dev/null +++ b/examples/zsh-colons-without-descriptions.usage.kdl @@ -0,0 +1,5 @@ +cmd "run" { + arg "" { + choices "test:git" "test:nvim" + } +}