diff options
Diffstat (limited to 'extra/completions/alacritty.bash')
-rw-r--r-- | extra/completions/alacritty.bash | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/extra/completions/alacritty.bash b/extra/completions/alacritty.bash new file mode 100644 index 00000000..086e3cdc --- /dev/null +++ b/extra/completions/alacritty.bash @@ -0,0 +1,57 @@ +#/usr/bin/env bash + +# Load completion function +complete -F _alacritty alacritty + +# Completion function +_alacritty() +{ + local cur prev prevprev opts + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + prevprev="${COMP_WORDS[COMP_CWORD-2]}" + opts="-h --help -V --version --live-config-reload --no-live-config-reload --persistent-logging --print-events -q -qq -v -vv -vvv --ref-test -e --command --config-file -d --dimensions --position -t --title --working-directory" + + # If `--command` or `-e` is used, stop completing + for i in "${!COMP_WORDS[@]}"; do + if [[ "${COMP_WORDS[i]}" == "--command" ]] \ + || [[ "${COMP_WORDS[i]}" == "-e" ]] \ + && [[ "${#COMP_WORDS[@]}" -gt "$(($i + 2))" ]] + then + return 0 + fi + done + + # Make sure the Y dimension isn't completed + if [[ "${prevprev}" == "--dimensions" ]] || [[ "${prevprev}" == "-d" ]]; then + return 0 + fi + + # Match the previous word + case "${prev}" in + --command | -e) + # Complete all commands in $PATH + COMPREPLY=( $(compgen -c -- "${cur}") ) + return 0;; + --config-file) + # Path based completion + local IFS=$'\n' + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) + return 0;; + --dimensions | -d | --title | -t) + # Don't complete here + return 0;; + --working-directory) + # Directory completion + local IFS=$'\n' + compopt -o filenames + COMPREPLY=( $(compgen -d -- "${cur}") ) + return 0;; + esac + + # Show all flags if there was no previous word + COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) + return 0 +} |