# shellcheck disable=SC2207 _bat() { if [[ ${COMP_WORDS[1]-} == cache ]]; then case $3 in --source | --target) local IFS=$'\n' COMPREPLY=($(compgen -d -- "$2")) compopt -o filenames return 0 ;; esac COMPREPLY=($(compgen -W " --build --clear --source --target --blank --help " -- "$2")) return 0 fi case $3 in -l | --language) local IFS=$'\n' COMPREPLY=($(compgen -W "$( "$1" --list-languages | while IFS=: read -r lang _; do printf "%s\n" "$lang" done )" -- "$2")) compopt -o filenames # for escaping return 0 ;; -H | --highlight-line | --diff-context | --tabs | --terminal-width | \ -m | --map-syntax | --style | --line-range | -h | --help | -V | \ --version) # argument required but no completion available, or argument # causes an exit return 0 ;; --file-name) local IFS=$'\n' COMPREPLY=($(compgen -f -- "$2")) compopt -o filenames return 0 ;; --wrap) COMPREPLY=($(compgen -W "auto never character" -- "$2")) return 0 ;; --color | --decorations | --paging) COMPREPLY=($(compgen -W "auto never always" -- "$2")) return 0 ;; --italic-text) COMPREPLY=($(compgen -W "always never" -- "$2")) return 0 ;; --pager) COMPREPLY=($(compgen -c -- "$2")) return 0 ;; --theme) local IFS=$'\n' COMPREPLY=($(compgen -W "$("$1" --list-themes)" -- "$2")) compopt -o filenames return 0 ;; esac if [[ $2 == -* ]]; then COMPREPLY=($(compgen -W " --show-all --plain --language --highlight-line --file-name --diff --diff-context --tabs --wrap --terminal-width --number --color --italic-text --decorations --paging --pager --map-syntax --theme --list-themes --style --line-range --list-languages --help --version " -- "$2")) return 0 fi local IFS=$'\n' COMPREPLY=($(compgen -f -- "$2")) compopt -o filenames ((COMP_CWORD == 1)) && COMPREPLY+=($(compgen -W cache -- "$2")) } && complete -F _bat {{PROJECT_EXECUTABLE}}