##// END OF EJS Templates
Add comment as per PR discussion, indicating MPL 1.1 is now required.
Add comment as per PR discussion, indicating MPL 1.1 is now required.

File last commit:

r10204:d9660210
r12639:c9917ed4
Show More
ipython-completion.bash
110 lines | 3.4 KiB | text/x-sh | BashLexer
/ examples / core / ipython-completion.bash
Julian Taylor
add bash completion example...
r8292 # load with: . ipython-completion.bash
Nathan Goldbaum
Completion: Adding preliminary zsh support.
r10204 if [[ -n ${ZSH_VERSION-} ]]; then
autoload -Uz bashcompinit && bashcompinit
fi
Julian Taylor
add bash completion example...
r8292 _ipython_get_flags()
{
local url=$1
local var=$2
local dash=$3
if [[ "$url $var" == $__ipython_complete_last ]]; then
opts=$__ipython_complete_last_res
return
fi
Julian Taylor
keep the trailing = of options
r8343 # pylab and profile don't need the = and the
# version without simplifies the special cased completion
opts=$(ipython ${url} --help-all | grep -E "^-{1,2}[^-]" | sed -e "s/<.*//" -e "s/[^=]$/& /" -e "s/^--pylab=$//" -e "s/^--profile=$/--profile /")
Julian Taylor
add bash completion example...
r8292 __ipython_complete_last="$url $var"
__ipython_complete_last_res="$opts"
}
_ipython()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD - 1]}
local subcommands="notebook qtconsole console kernel profile locate"
local opts=""
if [ -z "$__ipython_complete_baseopts" ]; then
Julian Taylor
fix profile subcommand completion
r8338 _ipython_get_flags baseopts
Julian Taylor
add bash completion example...
r8292 __ipython_complete_baseopts="${opts}"
fi
local baseopts="$__ipython_complete_baseopts"
local mode=""
for i in "${COMP_WORDS[@]}"; do
[ "$cur" = "$i" ] && break
if [[ ${subcommands} == *${i}* ]]; then
mode="$i"
Julian Taylor
don't offer subcommands after a dash option
r8337 break
elif [[ ${i} == "--"* ]]; then
mode="nosubcommand"
break
Julian Taylor
add bash completion example...
r8292 fi
done
Julian Taylor
fix profile subcommand completion
r8338 if [[ $mode == "profile" ]]; then
opts="list create"
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
elif [[ ${cur} == -* ]]; then
Julian Taylor
add bash completion example...
r8292 if [[ $mode == "notebook" ]]; then
Julian Taylor
use help-all to get all options and add profile specializations
r8336 _ipython_get_flags notebook
Julian Taylor
add bash completion example...
r8292 opts=$"${opts} ${baseopts}"
elif [[ $mode == "qtconsole" ]]; then
Julian Taylor
use help-all to get all options and add profile specializations
r8336 _ipython_get_flags qtconsole
Julian Taylor
add bash completion example...
r8292 opts="${opts} ${baseopts}"
elif [[ $mode == "console" ]]; then
Julian Taylor
use help-all to get all options and add profile specializations
r8336 _ipython_get_flags console
Julian Taylor
add bash completion example...
r8292 elif [[ $mode == "kernel" ]]; then
Julian Taylor
use help-all to get all options and add profile specializations
r8336 _ipython_get_flags kernel
Julian Taylor
add bash completion example...
r8292 opts="${opts} ${baseopts}"
Julian Taylor
use help-all to get all options and add profile specializations
r8336 elif [[ $mode == "locate" ]]; then
opts=""
Julian Taylor
add bash completion example...
r8292 else
opts=$baseopts
fi
Julian Taylor
keep the trailing = of options
r8343 # don't drop the trailing space
local IFS=$'\t\n'
Julian Taylor
add bash completion example...
r8292 COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
elif [[ ${prev} == "--pylab"* ]] || [[ ${prev} == "--gui"* ]]; then
Julian Taylor
fix pylab completion
r8339 if [ -z "$__ipython_complete_pylab" ]; then
Julian Taylor
replace $() with backticks...
r8344 __ipython_complete_pylab=`cat <<EOF | python -
Julian Taylor
fix pylab completion
r8339 try:
import IPython.core.shellapp as mod;
for k in mod.InteractiveShellApp.pylab.values:
Julian Taylor
keep the trailing = of options
r8343 print "%s " % k
Julian Taylor
fix pylab completion
r8339 except:
pass
EOF
Julian Taylor
replace $() with backticks...
r8344 `
Julian Taylor
fix pylab completion
r8339 fi
Julian Taylor
keep the trailing = of options
r8343 local IFS=$'\t\n'
Julian Taylor
fix pylab completion
r8339 COMPREPLY=( $(compgen -W "${__ipython_complete_pylab}" -- ${cur}) )
Julian Taylor
use help-all to get all options and add profile specializations
r8336 elif [[ ${prev} == "--profile"* ]]; then
if [ -z "$__ipython_complete_profiles" ]; then
Julian Taylor
replace $() with backticks...
r8344 __ipython_complete_profiles=`cat <<EOF | python -
Julian Taylor
use help-all to get all options and add profile specializations
r8336 try:
import IPython.core.profileapp
for k in IPython.core.profileapp.list_bundled_profiles():
Julian Taylor
keep the trailing = of options
r8343 print "%s " % k
Julian Taylor
use help-all to get all options and add profile specializations
r8336 p = IPython.core.profileapp.ProfileList()
for k in IPython.core.profileapp.list_profiles_in(p.ipython_dir):
Julian Taylor
keep the trailing = of options
r8343 print "%s " % k
Julian Taylor
use help-all to get all options and add profile specializations
r8336 except:
pass
EOF
Julian Taylor
replace $() with backticks...
r8344 `
Julian Taylor
use help-all to get all options and add profile specializations
r8336 fi
Julian Taylor
keep the trailing = of options
r8343 local IFS=$'\t\n'
Julian Taylor
use help-all to get all options and add profile specializations
r8336 COMPREPLY=( $(compgen -W "${__ipython_complete_profiles}" -- ${cur}) )
Julian Taylor
add bash completion example...
r8292 else
if [ -z "$mode" ]; then
COMPREPLY=( $(compgen -f -W "${subcommands}" -- ${cur}) )
else
COMPREPLY=( $(compgen -f -- ${cur}) )
fi
fi
}
Julian Taylor
keep the trailing = of options
r8343 complete -o default -o nospace -F _ipython ipython