dotfiles/.config/bash/00-compalias.bash

22 lines
595 B
Bash

function _compalias() {
local name val valarr fn
name="${COMP_WORDS[0]}"
val="${BASH_ALIASES[$name]}"
if [ -z "$val" ]; then
return 1
fi
read -ra valarr <<< "$val"
COMP_WORDS=("${valarr[@]}" "${COMP_WORDS[@]:1}")
COMP_LINE="${COMP_LINE//$name/$val}"
COMP_CWORD=$((${#COMP_WORDS[@]} - 1))
COMP_POINT="${#COMP_LINE}"
fn="$(complete -p "${COMP_WORDS[0]}" | grep -Po -- '-F\s+\K\w+')"
"$fn" "${COMP_WORDS[0]}" "${COMP_WORDS[-1]}" "${COMP_WORDS[-2]}"
}
function compalias() {
alias "$@"
complete -o nospace -F _compalias "${@%%=*}"
}