From 4b8f512217f20e6dd3c04434ff4e4129453a0427 Mon Sep 17 00:00:00 2001 From: Philip Sequeira Date: Fri, 15 Aug 2014 15:06:35 -0400 Subject: TOOLS/zsh.pl: complete profiles Implemented in shell, because it has to be done at runtime. --- TOOLS/zsh.pl | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'TOOLS/zsh.pl') diff --git a/TOOLS/zsh.pl b/TOOLS/zsh.pl index 405b2eff75..7c876bc8cc 100755 --- a/TOOLS/zsh.pl +++ b/TOOLS/zsh.pl @@ -37,6 +37,36 @@ chomp $vf_str; $protos_str .= qq{$_ } foreach (@protos); chomp $protos_str; +my $profile_comp = <<'EOS'; + local -a profiles + local current + for current in "${(@f)$($words[1] --profile=help)}"; do + current=${current//\*/\\\*} + current=${current//\:/\\\:} + current=${current//\[/\\\[} + current=${current//\]/\\\]} + if [[ $current =~ $'\t'([^$'\t']*)$'\t'(.*) ]]; then + if [[ -n $match[2] ]]; then + current="$match[1][$match[2]]" + else + current="$match[1]" + fi + profiles=($profiles $current) + fi + done + if [[ $state == profile ]]; then + # For --show-profile, only one allowed + if (( ${#profiles} > 0 )); then + _values 'profile' $profiles && rc=0 + fi + else + # For --profile, multiple allowed + profiles=($profiles 'help[list profiles]') + _values -s , 'profile(s)' $profiles && rc=0 + fi +EOS +chomp $profile_comp; + my $tmpl = <<"EOS"; #compdef mpv @@ -85,6 +115,10 @@ $vf_str _describe -t values 'video filters' values && rc=0 ;; + profile|profiles) +$profile_comp + ;; + mfiles) _tags files urls while _tags; do @@ -137,6 +171,8 @@ sub parse_opts { $entry .= '->vo' if ($1 eq '--vo'); $entry .= '->af' if ($1 eq '--af'); $entry .= '->vf' if ($1 eq '--vf'); + $entry .= '->profiles' if ($1 eq '--profile'); + $entry .= '->profile' if ($1 eq '--show-profile'); } push @list, $entry -- cgit v1.2.3