76 lines
1.4 KiB
Plaintext
76 lines
1.4 KiB
Plaintext
# bash completion for cmus-remote and cmus
|
|
|
|
_cmus-remote()
|
|
{
|
|
local cur prev longopts shortopts
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
# maybe we'll differentiate between $cur starting with - or --
|
|
longopts="--server --passwd --help --version --play --pause --stop
|
|
--next --prev --file --repeat --shuffle --volume --seek
|
|
--library --playlist --queue --clear --raw"
|
|
shortopts="-p -u -s -n -r -f -R -S -v -k -Q -l -P -q -c -C"
|
|
|
|
COMPREPLY=()
|
|
|
|
case "${prev}" in
|
|
--server) # can be a hostname[:port] or a filename
|
|
compopt -o nospace
|
|
_known_hosts_real -c "${cur}"
|
|
;&
|
|
--file|-f)
|
|
_filedir
|
|
return 0
|
|
;;
|
|
--passwd) # do not attempt to complete anything
|
|
;&
|
|
--volume|-v)
|
|
;&
|
|
--seek|-k)
|
|
;&
|
|
--raw|-C)
|
|
# supporting completion for raw commands would be nice (TODO)
|
|
return 0
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
if [[ ${cur} == -* ]]; then
|
|
COMPREPLY=(
|
|
$(compgen -W "${shortopts[*]} ${longopts[*]}" -- ${cur})
|
|
)
|
|
else
|
|
_filedir
|
|
fi
|
|
}
|
|
|
|
_cmus()
|
|
{
|
|
local cur prev opts
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
opts="--listen --plugins --show-cursor --help --version"
|
|
|
|
COMPREPLY=()
|
|
|
|
case "${prev}" in
|
|
--listen)
|
|
compopt -o nospace
|
|
_ip_addresses
|
|
_filedir
|
|
return 0;
|
|
;;
|
|
--plugins|--help|--version)
|
|
return 0;
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
COMPREPLY=($(compgen -W "${opts[*]}" -- ${cur}))
|
|
}
|
|
|
|
complete -F _cmus-remote cmus-remote
|
|
complete -F _cmus cmus
|