summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Sequeira <phsequei@gmail.com>2014-08-15 15:06:35 -0400
committerAlessandro Ghedini <alessandro@ghedini.me>2014-08-17 12:51:10 +0200
commit4b8f512217f20e6dd3c04434ff4e4129453a0427 (patch)
treee15e57e225f5b524fa593222c3075f22f9cec9cd
parent3778e6333070155d72ade4049e9886086e490a65 (diff)
downloadmpv-4b8f512217f20e6dd3c04434ff4e4129453a0427.tar.bz2
mpv-4b8f512217f20e6dd3c04434ff4e4129453a0427.tar.xz
TOOLS/zsh.pl: complete profiles
Implemented in shell, because it has to be done at runtime.
-rwxr-xr-xTOOLS/zsh.pl36
1 files changed, 36 insertions, 0 deletions
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