about summary refs log tree commit diff
path: root/Completion/BSD
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
parent6d82ce161a760af4421c1153e78741bda95bf6b6 (diff)
downloadzsh-9cc6ebe7a2263e6697d497e95335369b06bec11b.tar.gz
zsh-9cc6ebe7a2263e6697d497e95335369b06bec11b.tar.xz
zsh-9cc6ebe7a2263e6697d497e95335369b06bec11b.zip
37913: add additional completers and _zpool improvement
Diffstat (limited to 'Completion/BSD')
-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 "$@"