summary refs log tree commit diff
path: root/Completion/Commands/_bash_completions
blob: 548888138e478e135dc9105f5d265d4284420881 (plain) (blame)
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
43
44
45
46
#compdef -K _bash_complete-word complete-word \e~ _bash_list-choices list-choices ^X~
#
# This function is for bash compatibility.  As some of the bash bindings
# are already taken up in zsh, only Esc ~ and \C-x ~ are bound, and
# you must add the rest by hand.  The bindings expected are:
#
# Esc ! -> command name
# Esc $ -> environment variables
# Esc @ -> machine names
# Esc / -> file name
# Esc ~ -> a user name
# 
# C-x instead of Esc with one of the above will list matches and won't
# attempt any completion.
#
# The following will bind the remaining set; simply put it in .zshrc
# after compinit is run.
#
# for key in '!' '$' '@' '/'; do
#   bindkey "\e$key" _bash_complete-word
#   bindkey "^X$key" _bash_list-choices
# done
#
# If for some reason \e~ or ^X~ were already bound to something else,
# that will not have been overridden, so you should add '~' to the
# list of keys at the top of the for-loop.

setopt localoptions nullglob rcexpandparam extendedglob
unsetopt markdirs globsubst shwordsplit nounset ksharrays

local key=$KEYS[-1]

case $key in
  '!') _main_complete _command_names
       ;;
  '$') compadd - "${(@k)parameters[(R)*export*]}"
       ;;
  '@') _main_complete _hosts
       ;;
  '/') _main_complete _files
       ;;
  '~') _main_complete _users
       ;;
  *) _message "Key $key is not understood"
     ;;
esac