20 lines
584 B
Bash
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 "${@%%=*}"
|
|
}
|