summaryrefslogtreecommitdiffstats
path: root/completions/pydoc
diff options
context:
space:
mode:
Diffstat (limited to 'completions/pydoc')
-rw-r--r--completions/pydoc42
1 files changed, 42 insertions, 0 deletions
diff --git a/completions/pydoc b/completions/pydoc
new file mode 100644
index 0000000..e7b1178
--- /dev/null
+++ b/completions/pydoc
@@ -0,0 +1,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