##// END OF EJS Templates
Completion: Adding preliminary zsh support.
Nathan Goldbaum -
Show More
@@ -1,106 +1,110 b''
1 1 # load with: . ipython-completion.bash
2 2
3 if [[ -n ${ZSH_VERSION-} ]]; then
4 autoload -Uz bashcompinit && bashcompinit
5 fi
6
3 7 _ipython_get_flags()
4 8 {
5 9 local url=$1
6 10 local var=$2
7 11 local dash=$3
8 12 if [[ "$url $var" == $__ipython_complete_last ]]; then
9 13 opts=$__ipython_complete_last_res
10 14 return
11 15 fi
12 16 # pylab and profile don't need the = and the
13 17 # version without simplifies the special cased completion
14 18 opts=$(ipython ${url} --help-all | grep -E "^-{1,2}[^-]" | sed -e "s/<.*//" -e "s/[^=]$/& /" -e "s/^--pylab=$//" -e "s/^--profile=$/--profile /")
15 19 __ipython_complete_last="$url $var"
16 20 __ipython_complete_last_res="$opts"
17 21 }
18 22
19 23 _ipython()
20 24 {
21 25 local cur=${COMP_WORDS[COMP_CWORD]}
22 26 local prev=${COMP_WORDS[COMP_CWORD - 1]}
23 27 local subcommands="notebook qtconsole console kernel profile locate"
24 28 local opts=""
25 29 if [ -z "$__ipython_complete_baseopts" ]; then
26 30 _ipython_get_flags baseopts
27 31 __ipython_complete_baseopts="${opts}"
28 32 fi
29 33 local baseopts="$__ipython_complete_baseopts"
30 34 local mode=""
31 35 for i in "${COMP_WORDS[@]}"; do
32 36 [ "$cur" = "$i" ] && break
33 37 if [[ ${subcommands} == *${i}* ]]; then
34 38 mode="$i"
35 39 break
36 40 elif [[ ${i} == "--"* ]]; then
37 41 mode="nosubcommand"
38 42 break
39 43 fi
40 44 done
41 45
42 46 if [[ $mode == "profile" ]]; then
43 47 opts="list create"
44 48 COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
45 49 elif [[ ${cur} == -* ]]; then
46 50 if [[ $mode == "notebook" ]]; then
47 51 _ipython_get_flags notebook
48 52 opts=$"${opts} ${baseopts}"
49 53 elif [[ $mode == "qtconsole" ]]; then
50 54 _ipython_get_flags qtconsole
51 55 opts="${opts} ${baseopts}"
52 56 elif [[ $mode == "console" ]]; then
53 57 _ipython_get_flags console
54 58 elif [[ $mode == "kernel" ]]; then
55 59 _ipython_get_flags kernel
56 60 opts="${opts} ${baseopts}"
57 61 elif [[ $mode == "locate" ]]; then
58 62 opts=""
59 63 else
60 64 opts=$baseopts
61 65 fi
62 66 # don't drop the trailing space
63 67 local IFS=$'\t\n'
64 68 COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
65 69 return 0
66 70 elif [[ ${prev} == "--pylab"* ]] || [[ ${prev} == "--gui"* ]]; then
67 71 if [ -z "$__ipython_complete_pylab" ]; then
68 72 __ipython_complete_pylab=`cat <<EOF | python -
69 73 try:
70 74 import IPython.core.shellapp as mod;
71 75 for k in mod.InteractiveShellApp.pylab.values:
72 76 print "%s " % k
73 77 except:
74 78 pass
75 79 EOF
76 80 `
77 81 fi
78 82 local IFS=$'\t\n'
79 83 COMPREPLY=( $(compgen -W "${__ipython_complete_pylab}" -- ${cur}) )
80 84 elif [[ ${prev} == "--profile"* ]]; then
81 85 if [ -z "$__ipython_complete_profiles" ]; then
82 86 __ipython_complete_profiles=`cat <<EOF | python -
83 87 try:
84 88 import IPython.core.profileapp
85 89 for k in IPython.core.profileapp.list_bundled_profiles():
86 90 print "%s " % k
87 91 p = IPython.core.profileapp.ProfileList()
88 92 for k in IPython.core.profileapp.list_profiles_in(p.ipython_dir):
89 93 print "%s " % k
90 94 except:
91 95 pass
92 96 EOF
93 97 `
94 98 fi
95 99 local IFS=$'\t\n'
96 100 COMPREPLY=( $(compgen -W "${__ipython_complete_profiles}" -- ${cur}) )
97 101 else
98 102 if [ -z "$mode" ]; then
99 103 COMPREPLY=( $(compgen -f -W "${subcommands}" -- ${cur}) )
100 104 else
101 105 COMPREPLY=( $(compgen -f -- ${cur}) )
102 106 fi
103 107 fi
104 108
105 109 }
106 110 complete -o default -o nospace -F _ipython ipython
General Comments 0
You need to be logged in to leave comments. Login now