summaryrefslogtreecommitdiff
path: root/completions/pydoc
blob: e7b117886fd6fd748499b3b7f7532ba699070842 (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
38
39
40
41
42
# pydoc completion                                         -*- shell-script -*-

_pydoc()
{
    local cur prev words cword
    _init_completion || return

    case $prev in
        -k | -p)
            return
            ;;
        -w)
            _filedir
            return
            ;;
    esac

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W \
            '$("$1" | command sed -e "s/^pydoc3\{0,1\} //" | _parse_help -)' \
            -- "$cur"))
        return
    fi

    COMPREPLY=($(compgen -W 'keywords topics modules' -- "$cur"))

    if [[ $cur != @(.|*/)* ]]; then
        local python=python
        [[ ${1##*/} == *3* ]] && python=python3
        _xfunc python _python_modules $python
    fi

    # Note that we don't do "pydoc modules" as it is known to hang on
    # some systems; _python_modules tends to work better and faster.
    COMPREPLY+=($(compgen -W \
        '$($1 keywords topics | command sed -e /^Here/d)' -- "$cur"))

    _filedir py
} &&
    complete -F _pydoc pydoc pydoc3

# ex: filetype=sh