blob: 6ae52718f38d7fa404695787aff125f00b4a7921 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# bash shell function completion -*- shell-script -*-
_function()
{
local cur prev words cword
_init_completion || return
if [[ $1 == @(declare|typeset) ]]; then
if [[ $cur == [-+]* ]]; then
local opts
opts=($(_parse_usage "$1"))
# Most options also have a '+' form. We'll exclude the ones that don't with compgen.
opts+=(${opts[*]/-/+})
COMPREPLY=($(compgen -W "${opts[*]}" -X '+[Ffgp]' -- "$cur"))
else
local i=1
while [[ ${words[i]} == [-+]* ]]; do
if [[ ${words[i]} == -*[fF]* ]]; then
COMPREPLY=($(compgen -A function -- "$cur"))
return
fi
((i++))
done
if ((i > 1)); then
# There was at least one option and it was not one that limited operations to functions
COMPREPLY=($(compgen -A variable -- "$cur"))
fi
fi
elif ((cword == 1)); then
COMPREPLY=($(compgen -A function -- "$cur"))
else
COMPREPLY=("() $(type -- ${words[1]} | command sed -e 1,2d)")
fi
} &&
complete -F _function function declare typeset
# ex: filetype=sh
|