1
0
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:
Philip Langdale 2023-09-02 16:00:34 -07:00 committed by Niklas Haas
parent f3df6f53ba
commit a1c8bb2257
2 changed files with 12 additions and 3 deletions

View File

@ -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

View File

@ -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