dotfiles/.bash_completion

46 lines
1.2 KiB
Shell
Raw Normal View History

#!/bin/bash
# Custom `bash` completions
#
# Sourced automatically by the `bash-completion` package at shell start
complete -W '--force' dotfiles-install dotfiles-update
complete -W '--quieter' generate-shell-completions
# Fuzzy completion with the `**` trigger
# (e.g., `vi **<Tab>`, `ssh **<Tab>`)
#
# Must be sourced before `complete_alias` below,
# which then saves fzf's wrappers as the vanilla completions
#
# fzf's own host list globs ~/.ssh/config.d/*,
# which aborts under `failglob` if that folder is empty or missing
# => Use fzf's override hook with `bash-completion`'s host list instead
__fzf_list_hosts() {
local COMPREPLY=()
_known_hosts_real ''
printf '%s\n' "${COMPREPLY[@]}" | command sort -u --version-sort
}
if [ -r /usr/share/doc/fzf/examples/completion.bash ]; then
. /usr/share/doc/fzf/examples/completion.bash
fi
# Automagical completion for all ~/.config/shell/aliases
#
# See: https://github.com/cykerway/complete-alias
# shellcheck disable=SC2034 # Read by complete_alias sourced below
COMPAL_AUTO_UNMASK=1
# shellcheck disable=SC1091 # Third-party file, not linted
. "${XDG_CONFIG_HOME:-$HOME/.config}/bash/complete_alias"
if [ "${#BASH_ALIASES[@]}" -gt 0 ]; then
complete -F _complete_alias "${!BASH_ALIASES[@]}"
fi