summary refs log tree commit diff
path: root/Completion/Builtins/_bindkey
blob: 048d517f286eab15a00ade70004da2b86db48ad9 (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
#compdef bindkey

# Normally, this completes names of zle widgets, whether the builtin ones
# or ones defined by the user.  Note that a - allows a wildcard before it,
# so h-b-s-b will complete to history-beginning-search-backward.  You
# can alter this by removing the -M ... from the second compadd.
#
# Where appropriate, will complete keymaps instead of widgets.

local state expl line curcontext="$curcontext"
typeset -A opt_args

_arguments -C -s \
  '(-v -a -M -l -D -A -N)-e[select emacs keymap and bind it to main]' \
  '(-e -a -M -l -D -A -N)-v[select viins keymap and bind it to main]' \
  '(-e -v -M -l -D -A -N)-a[select vicmd keymap]' \
  '(-e -v -a -l -D -A -N)-M[specify keymap to select]:keymap:->keymap' \
  '(-e -v -a -M -D -A -N -m -r -s -R *)-l[list existing keymap names]' \
  '(-e -v -a -d -A -N -m -r -s -R *)-L[output in form of bindkey commands]' \
  '(-e -v -a -l -D -A -N -m -r -s -R *)-d[delete existing keymaps and reset to default state]' \
  '(-e -v -a -M -l -d -A -N -m -r -s -R *)-D[delete named keymaps]:*:keymap:->keymap' \
  '(-e -v -a -M -l -L -d -D -N -m -r -s -R *)-A[create alias to keymap]:old-keymap:->keymap:new-keymap:->keymap' \
  '(-e -v -a -M -l -L -d -D -A -m -r -s -R *)-N[create new keymap]:new-keymap:->keymap:old-keymap to copy:->keymap' \
  '(-l -L -d -D -A -N -r -s -r -R *)-m[add builtin meta-key bindings to selected keymape]' \
  '(-l -L -d -D -A -N -m -s *)-r[unbind specified in-strings]:*:in-string' \
  '(-l -L -d -D -A -N -m -r *)-s[bind each in-string to each out-string]:*:key string' \
  '(-e -v -a -M -l -L -d -D -A -N -m)-R[interpret in-strings as ranges]' \
  '(-l -L -d -A -N -m -r -s)*::widgets:->widget' && return 0

case $state in
  keymap)
    _wanted -C -M keymaps expl keymap compadd -a keymaps
  ;;
  widget)
    _wanted widgets expl widget compadd -M 'r:|-=* r:|=*' -k widgets
  ;;
esac