use builtin; use str; set edit:completion:arg-completer[my-app] = {|@words| fn spaces {|n| builtin:repeat $n ' ' | str:join '' } fn cand {|text desc| edit:complex-candidate $text &display=$text' '(spaces (- 14 (wcswidth $text)))$desc } var command = 'my-app' for word $words[1..-1] { if (str:has-prefix $word '-') { break } set command = $command';'$word } var completions = [ &'my-app'= { cand --single-quotes 'Can be ''always'', ''auto'', or ''never''' cand --double-quotes 'Can be "always", "auto", or "never"' cand --backticks 'For more information see `echo test`' cand --backslash 'Avoid ''\n''' cand --brackets 'List packages [filter]' cand --expansions 'Execute the shell command with $SHELL' cand -h 'Print help' cand --help 'Print help' cand -V 'Print version' cand --version 'Print version' cand cmd-single-quotes 'Can be ''always'', ''auto'', or ''never''' cand cmd-double-quotes 'Can be "always", "auto", or "never"' cand cmd-backticks 'For more information see `echo test`' cand cmd-backslash 'Avoid ''\n''' cand cmd-brackets 'List packages [filter]' cand cmd-expansions 'Execute the shell command with $SHELL' cand help 'Print this message or the help of the given subcommand(s)' } &'my-app;cmd-single-quotes'= { cand -h 'Print help' cand --help 'Print help' } &'my-app;cmd-double-quotes'= { cand -h 'Print help' cand --help 'Print help' } &'my-app;cmd-backticks'= { cand -h 'Print help' cand --help 'Print help' } &'my-app;cmd-backslash'= { cand -h 'Print help' cand --help 'Print help' } &'my-app;cmd-brackets'= { cand -h 'Print help' cand --help 'Print help' } &'my-app;cmd-expansions'= { cand -h 'Print help' cand --help 'Print help' } &'my-app;help'= { cand cmd-single-quotes 'Can be ''always'', ''auto'', or ''never''' cand cmd-double-quotes 'Can be "always", "auto", or "never"' cand cmd-backticks 'For more information see `echo test`' cand cmd-backslash 'Avoid ''\n''' cand cmd-brackets 'List packages [filter]' cand cmd-expansions 'Execute the shell command with $SHELL' cand help 'Print this message or the help of the given subcommand(s)' } &'my-app;help;cmd-single-quotes'= { } &'my-app;help;cmd-double-quotes'= { } &'my-app;help;cmd-backticks'= { } &'my-app;help;cmd-backslash'= { } &'my-app;help;cmd-brackets'= { } &'my-app;help;cmd-expansions'= { } &'my-app;help;help'= { } ] $completions[$command] }