summaryrefslogtreecommitdiff
path: root/Completion/BSD/Command
diff options
context:
space:
mode:
authorEric Cook <llua@gmx.com>2016-02-11 22:53:16 -0500
committerEric Cook <illua@users.sourceforge.net>2016-02-11 22:53:16 -0500
commit9cc6ebe7a2263e6697d497e95335369b06bec11b (patch)
tree3c35b78e6defa49cfcce347e171ffd0d6cb85867 /Completion/BSD/Command
parent6d82ce161a760af4421c1153e78741bda95bf6b6 (diff)
downloadzsh-9cc6ebe7a2263e6697d497e95335369b06bec11b.tar.gz
zsh-9cc6ebe7a2263e6697d497e95335369b06bec11b.zip
37913: add additional completers and _zpool improvement
Diffstat (limited to 'Completion/BSD/Command')
-rw-r--r--Completion/BSD/Command/_gstat11
-rw-r--r--Completion/BSD/Command/_sysrc77
2 files changed, 88 insertions, 0 deletions
diff --git a/Completion/BSD/Command/_gstat b/Completion/BSD/Command/_gstat
new file mode 100644
index 000000000..55b7db74d
--- /dev/null
+++ b/Completion/BSD/Command/_gstat
@@ -0,0 +1,11 @@
+#compdef gstat
+
+_arguments -s -w : \
+ '-a[only display providers that are at least 0.1% busy]' \
+ '-b[batch mode]' \
+ '-c[enable the display geom(4) consumers]' \
+ '-d[enable the display delete operations]' \
+ '-f[filter by regex]:regex' \
+ '-o[enable the display for other operations]' \
+ '-I[display refresh rate]:interval' \
+ '-p[only display physical providers]'
diff --git a/Completion/BSD/Command/_sysrc b/Completion/BSD/Command/_sysrc
new file mode 100644
index 000000000..d8bc4ef0e
--- /dev/null
+++ b/Completion/BSD/Command/_sysrc
@@ -0,0 +1,77 @@
+#compdef sysrc
+_sysrc_caching_policy() {
+ local -a oldp
+ oldp=( "$1"(Nm+1) )
+ (( $#oldp ))
+}
+
+
+_sysrc() {
+ _arguments -A '-*' : \
+ '-c[check only, return success if vars are set]' \
+ '-d[print variable(s) description]' \
+ '-D[print default value(s) only]' \
+ '-e[print variables as sh(1) compatible syntax]' \
+ '*-f[operate on specified file(s), not \`rc_conf_files'\'']: : _files' \
+ '-F[print only the last rc.conf(5) file each directive is in]' \
+ '-h[print short usage message]' \
+ '--help[print full usage message]' \
+ '-i[ignore unknown variables]' \
+ '-j[jail to operate within]:jails:_jails' \
+ '-n[print only variable values]' \
+ '-N[print only variable names]' \
+ '-q[quiet mode]' \
+ '-R[specify an alternative root]:alternative root:_files -/' \
+ '-v[verbose mode]' \
+ '--version[print version information]' \
+ '-x[remove specified variables from specified file(s)]' \
+ '*:configuration variable:->confvars' \
+ - set1 \
+ '-a[list all non-default configuration variables]' \
+ - set2 \
+ '-A[list all configuration variables]'
+
+ if [[ $state == confvars ]]; then
+ local k v opt curcontext="${curcontext%:*}:values"; local -a rc_conf_vars
+ if [[ -prefix *=* ]]; then
+ # do you really want to go down this hole?
+ _message -e values value
+ else
+ if zstyle -T ":completion:${curcontext%:*}:values" verbose; then
+ opt=d
+ else
+ opt=N
+ fi
+
+ if ! zstyle -m ":completion:${curcontext%:*}:values" cache-policy '*'; then
+ zstyle ":completion:${curcontext%:*}:values" cache-policy _sysrc_caching_policy
+ fi
+
+ if _cache_invalid sysrc/rc_conf_vars ||
+ ! _retrieve_cache sysrc/rc_conf_vars; then
+
+ _call_program sysrc-cmd sysrc -A$opt | while read -r k v; do
+ [[ $k = DEBUG* ]] && continue
+ if [[ -z $v ]]; then
+ rc_conf_vars+=( ${k%:} )
+ else
+ rc_conf_vars+=( "${k%:}[${${v//]/\\]}//:/\\:}]" )
+ fi
+ v=
+ done
+
+ _store_cache sysrc/rc_conf_vars rc_conf_vars
+ fi
+
+ if (( $#rc_conf_vars )); then
+ if [[ $opt == N ]]; then
+ _values -w -C variable ${^rc_conf_vars%%\[*}'::value'
+ else
+ _values -w -C variable ${^rc_conf_vars}'::value'
+ fi
+ fi
+ fi
+ fi
+}
+
+_sysrc "$@"