From c7036ac85bd0f93b989bdab8547885180e60ebad Mon Sep 17 00:00:00 2001 From: Jared Lunde Date: Wed, 22 Feb 2023 09:27:27 -0500 Subject: [PATCH] fix: fix zsh completion bugs (#12) --- completions/zsh.ts | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/completions/zsh.ts b/completions/zsh.ts index 0ba2966..2ace523 100644 --- a/completions/zsh.ts +++ b/completions/zsh.ts @@ -138,15 +138,11 @@ function* completeArgsAndFlags( if (args.length > 0 || flags.length > 0) { yield `_arguments -s \\`; + const argsAndFlags = [...args, ...flags]; - for (let i = 0; i < args.length; i++) { - const arg = args[i]; - yield ` ${arg}` + (i === args.length - 1 ? "" : " \\"); - } - - for (let i = 0; i < flags.length; i++) { - const flag = flags[i]; - yield ` ${flag}` + (i === flags.length - 1 ? "" : " \\"); + for (let i = 0; i < argsAndFlags.length; i++) { + const arg = argsAndFlags[i]; + yield ` ${arg}` + (i === argsAndFlags.length - 1 ? "" : " \\"); } } } @@ -167,7 +163,6 @@ function completeArgs( .replace(":", " "); let action = ``; // A zsh variadic argument - const variadicPrefix = variadic ? "*" : " "; const type = innerType(arg); if (type instanceof z.ZodEnum || type instanceof z.ZodNativeEnum) { @@ -179,14 +174,9 @@ function completeArgs( } args.push( - `"${variadicPrefix ? "*" : ""}${ - variadicPrefix || - hasOptionalArgs || - arg instanceof z.ZodOptional || - arg instanceof z.ZodDefault - ? ":" - : position + 1 - }:${message}:${action}" \\`, + `"${variadic ? "*" : ""}${ + variadic ? ":" : `${position + 1}:` + }:${message}:${action}"`, ); });