mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-12-02 07:53:43 +08:00
80 lines
2.5 KiB
Fish
80 lines
2.5 KiB
Fish
function __fish_bind_test1
|
|
set -l args
|
|
set -l use_keys no
|
|
for i in (commandline -pxc)
|
|
switch $i
|
|
case -k --k --ke --key
|
|
set use_keys yes
|
|
|
|
case "-*"
|
|
|
|
case "*"
|
|
set -a args $i
|
|
end
|
|
end
|
|
|
|
switch $use_keys
|
|
case yes
|
|
switch (count $args)
|
|
case 1
|
|
return 0
|
|
end
|
|
end
|
|
return 1
|
|
end
|
|
|
|
function __fish_bind_test2
|
|
set -l args
|
|
for i in (commandline -pxc)
|
|
switch $i
|
|
case "-*"
|
|
|
|
case "*"
|
|
set -a args $i
|
|
end
|
|
end
|
|
|
|
switch (count $args)
|
|
case 2
|
|
return 0
|
|
end
|
|
|
|
return 1
|
|
|
|
end
|
|
|
|
complete -c bind -f
|
|
complete -c bind -s a -l all -d 'Show unavailable key bindings/erase all bindings'
|
|
complete -c bind -s e -l erase -d 'Erase mode'
|
|
complete -c bind -s f -l function-names -d 'Print names of available functions'
|
|
complete -c bind -s h -l help -d "Display help and exit"
|
|
complete -c bind -s k -l key -d 'Specify key name, not sequence'
|
|
complete -c bind -s K -l key-names -d 'Print names of available keys'
|
|
complete -c bind -s M -l mode -d 'Specify the bind mode that the bind is used in' -xa '(bind -L)'
|
|
complete -c bind -s m -l sets-mode -d 'Change current mode after bind is executed' -xa '(bind -L)'
|
|
complete -c bind -s L -l list-modes -d 'Display a list of defined bind modes'
|
|
complete -c bind -s s -l silent -d 'Operate silently'
|
|
complete -c bind -l preset -d 'Operate on preset bindings'
|
|
complete -c bind -l user -d 'Operate on user bindings'
|
|
|
|
complete -c bind -n __fish_bind_test2 -a '(bind --function-names)' -d 'Function name' -x
|
|
|
|
function __fish_bind_complete
|
|
argparse M/mode= m/sets-mode= preset user s/silent \
|
|
a/all function-names list-modes e/erase -- (commandline -xpc)[2..] 2>/dev/null
|
|
or return 1
|
|
set -l token (commandline -ct)
|
|
if test (count $argv) = 0 && set -l prefix (string match -r -- '(.*,)?(ctrl-|alt-|shift-)*' $token)
|
|
printf '%sctrl-\tCtrl modifier…\n' $prefix
|
|
printf '%sc-\tCtrl modifier…\n' $prefix
|
|
printf '%salt-\tAlt modifier…\n' $prefix
|
|
printf '%sa-\tAlt modifier…\n' $prefix
|
|
printf '%sshift-\tShift modifier…\n' $prefix
|
|
set -l key_names minus comma backspace delete escape \
|
|
enter up down left right pageup pagedown home end insert tab \
|
|
space f(seq 12)
|
|
printf '%s\tNamed key\n' $prefix$key_names
|
|
end
|
|
end
|
|
complete -c bind -k -a '(__fish_bind_complete)' -f
|