mirror of
https://github.com/mpv-player/mpv
synced 2025-03-31 15:59:34 +00:00
{zsh,bash}-completion: use config when autocompleting profiles
We were over-enthusiastic when introducing --no-config into the autocompletions. When autocompleting profiles, you actually need the config, because that's where the profiles come from. zsh is untested - I don't use it.
This commit is contained in:
parent
f3df6f53ba
commit
a1c8bb2257
@ -192,6 +192,7 @@ case $state in
|
|||||||
|
|
||||||
parse-help-*)
|
parse-help-*)
|
||||||
local option_name=${state#parse-help-}
|
local option_name=${state#parse-help-}
|
||||||
|
local no_config="--no-config"
|
||||||
# Can't do non-capturing groups without pcre, so we index the ones we want
|
# Can't do non-capturing groups without pcre, so we index the ones we want
|
||||||
local pattern name_group=1 desc_group=2
|
local pattern name_group=1 desc_group=2
|
||||||
case $option_name in
|
case $option_name in
|
||||||
@ -203,6 +204,8 @@ case $state in
|
|||||||
# but would break if a profile name contained spaces. This stricter one
|
# but would break if a profile name contained spaces. This stricter one
|
||||||
# only breaks if a profile name contains tabs.
|
# only breaks if a profile name contains tabs.
|
||||||
pattern=$'^\t([^\t]*)\t(.*)'
|
pattern=$'^\t([^\t]*)\t(.*)'
|
||||||
|
# We actually want config so we can autocomplete the user's profiles
|
||||||
|
no_config=""
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
pattern=$'^[ \t]+(--'${option_name}$'=)?([^ \t]+)[ \t]*[-:]?[ \t]*(.*)'
|
pattern=$'^[ \t]+(--'${option_name}$'=)?([^ \t]+)[ \t]*[-:]?[ \t]*(.*)'
|
||||||
@ -211,7 +214,7 @@ case $state in
|
|||||||
esac
|
esac
|
||||||
local -a values
|
local -a values
|
||||||
local current
|
local current
|
||||||
for current in "${(@f)$($~words[1] --no-config --${option_name}=help)}"; do
|
for current in "${(@f)$($~words[1] ${no_config} --${option_name}=help)}"; do
|
||||||
[[ $current =~ $pattern ]] || continue;
|
[[ $current =~ $pattern ]] || continue;
|
||||||
local name=${match[name_group]//:/\\:} desc=${match[desc_group]}
|
local name=${match[name_group]//:/\\:} desc=${match[desc_group]}
|
||||||
if [[ -n $desc ]]; then
|
if [[ -n $desc ]]; then
|
||||||
|
@ -26,8 +26,10 @@ _mpv_get_args()
|
|||||||
local partial="$2"
|
local partial="$2"
|
||||||
local type=$(echo "$doc" | awk '{print $2;}')
|
local type=$(echo "$doc" | awk '{print $2;}')
|
||||||
|
|
||||||
|
# We special-case profiles to ensure we read the config
|
||||||
if [ "$1" = "--show-profile" ]; then
|
if [ "$1" = "--show-profile" ]; then
|
||||||
# This is a special case
|
type="ShowProfile"
|
||||||
|
elif [ "$1" = "--profile" ]; then
|
||||||
type="Profile"
|
type="Profile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -59,7 +61,11 @@ _mpv_get_args()
|
|||||||
candidates+=("help")
|
candidates+=("help")
|
||||||
;;
|
;;
|
||||||
Profile)
|
Profile)
|
||||||
candidates=($(mpv --no-config $1= | grep -v ':' | awk '{print $1;}'))
|
candidates=($(mpv $1=help | grep -v ':' | awk '{print $1;}'))
|
||||||
|
candidates+=("help")
|
||||||
|
;;
|
||||||
|
ShowProfile)
|
||||||
|
candidates=($(mpv $1= | grep -v ':' | awk '{print $1;}'))
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# There are other categories; some of which we could do something smarter
|
# There are other categories; some of which we could do something smarter
|
||||||
|
Loading…
Reference in New Issue
Block a user