first commit
This commit is contained in:
44
completion.bash
Normal file
44
completion.bash
Normal file
@@ -0,0 +1,44 @@
|
||||
# goto completion -*- shell-script -*-
|
||||
|
||||
_comp_cmd_goto() {
|
||||
local cur prev words cword comp_args
|
||||
_comp_initialize -- "$@" || return
|
||||
|
||||
# echo "[$cur] [$prev] [${words[@]}] [$cword] [$comp_args]"
|
||||
|
||||
local -A opts=([-e]="" [-l]="" [-t]="")
|
||||
|
||||
local i
|
||||
for i in "${!words[@]}"; do
|
||||
[[ ${words[i]} && $i -ne $cword ]] && unset -v "opts[${words[i]}]"
|
||||
case "${words[i]}" in
|
||||
-e)
|
||||
unset -v 'opts[-l]' 'opts[-t]'
|
||||
;;
|
||||
-l)
|
||||
unset -v 'opts[-e]' 'opts[-t]'
|
||||
;;
|
||||
-t)
|
||||
unset -v 'opts[-e]' 'opts[-l]'
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ $cur == -* ]]; then
|
||||
_comp_compgen -- -W '"${!opts[@]}"'
|
||||
return
|
||||
fi
|
||||
|
||||
case $prev in
|
||||
-e)
|
||||
[[ -v 'opts[-e]' ]] && __goto_comp_keys
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
# do goto keys only if we did not have -[elt]
|
||||
[[ ${words[*]} == *\ -* ]] || __goto_comp_keys
|
||||
} &&
|
||||
complete -F _comp_cmd_goto goto
|
||||
|
||||
# ex: filetype=sh
|
||||
Reference in New Issue
Block a user