use builtin; use str; set edit:completion:arg-completer[just] = {|@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 = 'just' for word $words[1..-1] { if (str:has-prefix $word '-') { break } set command = $command';'$word } var completions = [ &'just'= { cand --chooser 'Override binary invoked by `--choose`' cand --color 'Print colorful output' cand --command-color 'Echo recipe lines in ' cand --dump-format 'Dump justfile as ' cand --list-heading 'Print before list' cand --list-prefix 'Print before each list item' cand -f 'Use as justfile' cand --justfile 'Use as justfile' cand --set 'Override with ' cand --shell 'Invoke to run recipes' cand --shell-arg 'Invoke shell with as an argument' cand -d 'Use as working directory. --justfile must also be set' cand --working-directory 'Use as working directory. --justfile must also be set' cand -c 'Run an arbitrary command with the working directory, `.env`, overrides, and exports set' cand --command 'Run an arbitrary command with the working directory, `.env`, overrides, and exports set' cand --completions 'Print shell completion script for ' cand -s 'Show information about ' cand --show 'Show information about ' cand --dotenv-filename 'Search for environment file named instead of `.env`' cand -E 'Load as environment file instead of searching for one' cand --dotenv-path 'Load as environment file instead of searching for one' cand --check 'Run `--fmt` in ''check'' mode. Exits with 0 if justfile is formatted correctly. Exits with 1 and prints a diff if formatting is required.' cand --yes 'Automatically confirm all recipes.' cand -n 'Print what just would do without doing it' cand --dry-run 'Print what just would do without doing it' cand --highlight 'Highlight echoed recipe lines in bold' cand --no-aliases 'Don''t show aliases in list' cand --no-deps 'Don''t run recipe dependencies' cand --no-dotenv 'Don''t load `.env` file' cand --no-highlight 'Don''t highlight echoed recipe lines in bold' cand -q 'Suppress all output' cand --quiet 'Suppress all output' cand --shell-command 'Invoke with the shell used to run recipe lines and backticks' cand --clear-shell-args 'Clear shell arguments' cand -u 'Return list and summary entries in source order' cand --unsorted 'Return list and summary entries in source order' cand --unstable 'Enable unstable features' cand -v 'Use verbose output' cand --verbose 'Use verbose output' cand --changelog 'Print changelog' cand --choose 'Select one or more recipes to run using a binary chooser. If `--chooser` is not passed the chooser defaults to the value of $JUST_CHOOSER, falling back to `fzf`' cand --dump 'Print justfile' cand -e 'Edit justfile with editor given by $VISUAL or $EDITOR, falling back to `vim`' cand --edit 'Edit justfile with editor given by $VISUAL or $EDITOR, falling back to `vim`' cand --evaluate 'Evaluate and print all variables. If a variable name is given as an argument, only print that variable''s value.' cand --fmt 'Format and overwrite justfile' cand --init 'Initialize new justfile in project root' cand -l 'List available recipes and their arguments' cand --list 'List available recipes and their arguments' cand --man 'Print man page' cand --summary 'List names of available recipes' cand --variables 'List names of variables' cand -g 'Use global justfile' cand --global-justfile 'Use global justfile' cand -h 'Print help' cand --help 'Print help' cand -V 'Print version' cand --version 'Print version' } ] $completions[$command] }