summaryrefslogtreecommitdiff
path: root/completions/pydoc
diff options
context:
space:
mode:
Diffstat (limited to 'completions/pydoc')
-rw-r--r--completions/pydoc39
1 files changed, 39 insertions, 0 deletions
diff --git a/completions/pydoc b/completions/pydoc
new file mode 100644
index 00000000..2783d174
--- /dev/null
+++ b/completions/pydoc
@@ -0,0 +1,39 @@
+# 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" | sed -e "s/^pydoc3\{0,1\} //" | _parse_help - )' \
+ -- "$cur" ) )
+ return
+ fi
+
+ COMPREPLY=( $( compgen -W 'keywords topics modules' -- "$cur" ) )
+
+ local python=python; [[ $1 == *3* ]] && python=python3
+ _xfunc python _python_modules $python
+
+ # 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 | sed -e /^Here/d )' -- "$cur" ) )
+
+ _filedir py
+} &&
+complete -F _pydoc pydoc pydoc3
+
+# ex: ts=4 sw=4 et filetype=sh