File: function

package info (click to toggle)
bash-completion 1%3A2.11-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 6,560 kB
  • sloc: python: 8,228; makefile: 1,766; sh: 275; perl: 85; xml: 29; ansic: 7; ruby: 2
file content (37 lines) | stat: -rw-r--r-- 1,265 bytes parent folder | download | duplicates (2)
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