dotfiles/.config/bash/00-compalias.bash
2024-07-02 14:44:21 +02:00

20 lines
584 B
Bash

function _compalias() {
local name val valarr fn
name="${COMP_WORDS[0]}"
val="${BASH_ALIASES[$name]}"
[ -z "$val" ] && return 1
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() {
builtin alias "$@"
complete -o nospace -F _compalias "${@%%=*}"
}