# @generated by usage-argv for `mise __complete_word__ --shell fish` function __usage_complete_mise set -l line (commandline -cp) # `commandline -cp` is already cut at the cursor, so there is nothing to say about where # the cursor is: the end of what it gives is where the cursor was. set -l out (command 'mise' __complete_word__ --shell fish --line "$line" 2>/dev/null) # Built with printf rather than written literally: fish's `case` takes patterns, not # computed values, and a control byte is not something to spell twice. set -l marker_any (printf '\x01files') set -l marker_dirs (printf '\x01dirs') set -l marker_executables (printf '\x01executables') set -l marker_commands (printf '\x01commands') set -l marker_extensions (printf '\x01extensions') set -l files "" set -l extensions for entry in $out if test "$entry" = "$marker_any" set files any else if test "$entry" = "$marker_dirs" set files dirs else if test "$entry" = "$marker_executables" set files executables else if test "$entry" = "$marker_commands" set files commands else if string match -q "$marker_extensions*" -- "$entry" set files extensions set extensions (string split (printf '\t') -- "$entry") set -e extensions[1] else if test -n "$entry" # printf, not echo: fish's echo reads a leading -n, -e, -s or -E as its own option, # so a CLI with a `-n` would have that candidate swallowed on the way to the prompt. # printf takes its format first and everything after it as data. printf '%s\n' $entry end end # fish's own path completion, which knows about `~`, variables and remote paths. switch $files case any __fish_complete_path (commandline -ct) case dirs __fish_complete_directories (commandline -ct) case executables for candidate in (__fish_complete_path (commandline -ct)) set -l value (string split -m 1 (printf '\t') -- $candidate)[1] if test -d "$value"; or test -x "$value" printf '%s\n' $candidate end end case commands __fish_complete_command (commandline -ct) case extensions for candidate in (__fish_complete_path (commandline -ct)) set -l value (string split -m 1 (printf '\t') -- $candidate)[1] if test -d "$value" printf '%s\n' $candidate continue end for extension in $extensions if string match -q "*.$extension" -- "$value" printf '%s\n' $candidate break end end end end end # `-f` so fish offers no filenames of its own: this CLI says when they belong, and the function # produces them itself when they do. complete -c 'mise' -f -a '(__usage_complete_mise)'