about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Linux/Command/_analyseplugin25
2 files changed, 30 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index c9ad7a196..ad0d87da7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-04  Clint Adams  <clint@zsh.org>
+
+	* 22392: Completion/Linux/Command/_analyseplugin:
+	completion for ladspa's analyseplugin.
+
 2006-03-29  Peter Stephenson  <p.w.stephenson@ntlworld.com>
 
 	* users/10107: Doc/Zsh/jobs.yo: SIGQUIT is ignored by the shell.
diff --git a/Completion/Linux/Command/_analyseplugin b/Completion/Linux/Command/_analyseplugin
new file mode 100644
index 000000000..e7f90ba7b
--- /dev/null
+++ b/Completion/Linux/Command/_analyseplugin
@@ -0,0 +1,25 @@
+#compdef analyseplugin
+
+local expl context state line nopts ret=1
+typeset -A opt_args
+
+_arguments \
+    '-l[Gives a brief listing (one line per plugin)]' \
+    '(-)1:plugin file:->pfile' \
+    '(-)2::plugin label:->plabel' && ret=0
+
+case "$state" in
+    pfile)
+	_wanted plugin-files expl 'plugin file' compadd \
+	    ${~${^${${(f)"$(_call_program ladspa-plugins listplugins 2> /dev/null)"}:#[[:space:]]*}/%:/(:t:r)}} \
+	    && return
+	;;
+    plabel)
+	typeset -a plabel
+	nopts=(${words:#-*})
+	plabel=(${${(f)"$($nopts[1] -l $nopts[2] 2> /dev/null)"}/[[:space:]]##/:})
+	_describe -t plugin-label 'plugin label' plabel && return
+	;;
+esac
+
+return ret