chiark / gitweb /
zsh_completion: Allow specifying multiple arguments
authorWilliam Giokas <1007380@gmail.com>
Thu, 15 Aug 2013 03:09:14 +0000 (22:09 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 15 Aug 2013 15:29:08 +0000 (11:29 -0400)
Some of the options in systemd can take multiple arguments, such as
systemctl's --type option. Previously, you would only be able to
complete a single type after the -t, but now zsh will continue to
complete the types, separating them by commas.

systemd-inhibit's --what command has colon (:), and that has been taken
into account.

Makefile.am
shell-completion/zsh/_systemctl
shell-completion/zsh/_systemd
shell-completion/zsh/_systemd-delta [new file with mode: 0644]
shell-completion/zsh/_systemd-inhibit

index 641e92fd794fc4eb6e1a51b97f8f67bfd42588e7..5d3599386fc062b15640e531054a1869aa7d3364 100644 (file)
@@ -351,6 +351,7 @@ dist_zshcompletion_DATA = \
        shell-completion/zsh/_systemd-nspawn \
        shell-completion/zsh/_systemd-analyze \
        shell-completion/zsh/_sd_hosts_or_user_at_host \
+       shell-completion/zsh/_systemd-delta \
        shell-completion/zsh/_systemd
 
 dist_sysctl_DATA = \
index dbe168a60969e456ce6739b5a242ccd2e7e06ab1..cc2df3c828626809c1a9cd622c7a27ce595e11b8 100644 (file)
@@ -294,11 +294,23 @@ _outputmodes() {
     _describe -t output 'output mode' _output_opts || compadd "$@"
 }
 
+_unit_states() {
+    local -a _states
+    _states=(loaded failed active inactive not-found listening running waiting plugged mounted exited dead masked)
+    _values -s , "${_states[@]}"
+}
+
+_unit_types() {
+    local -a _types
+    _types=(automount device mount path service snapshot socket swap target timer)
+    _values -s , "${_types[@]}"
+}
+
 _arguments -s \
     {-h,--help}'[Show help]' \
     '--version[Show package version]' \
-    {-t,--type=}'[List only units of a particular type]:unit type:(automount device mount path service snapshot socket swap target timer)' \
-    '--state=[Display units in the specified state]:unit state:(loaded failed active inactive not-found listening running waiting plugged mounted exited dead masked)' \
+    {-t,--type=}'[List only units of a particular type]:unit type:_unit_types' \
+    '--state=[Display units in the specifyied state]:unit state:_unit_states' \
     \*{-p,--property=}'[Show only properties by specific name]:unit property' \
     {-a,--all}'[Show all units/properties, including dead/empty ones]' \
     '--reverse[Show reverse dependencies]' \
index 7aab52d5b65c7a2931801ca25bbcb83e92f1265b..fe39de8c38582607426552dc023c3845d33822c7 100644 (file)
@@ -1,4 +1,4 @@
-#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-delta systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tty-ask-password-agent
+#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tty-ask-password-agent
 
 _ctls()
 {
@@ -45,15 +45,6 @@ _ctls()
                 {-b,--batch}'[Run in batch mode, accepting no input]' \
                 '--depth=[Maximum traversal depth]'
         ;;
-        systemd-delta)
-            _arguments \
-                {-h,--help}'[Show this help]' \
-                '--version[Show package version]' \
-                '--no-pager[Do not pipe output into a pager]' \
-                '--diff=[Show a diff when overridden files differ]:boolean:(1 0)' \
-                {-t,--type=}'[Only display a selected set of override types]:types:(masked equivalent redirected overridden unchanged)' \
-                ':SUFFIX:(tmpfiles.d sysctl.d systemd/system)'
-        ;;
         systemd-detect-virt)
             _arguments \
                 {-h,--help}'[Show this help]' \
diff --git a/shell-completion/zsh/_systemd-delta b/shell-completion/zsh/_systemd-delta
new file mode 100644 (file)
index 0000000..6abb6fc
--- /dev/null
@@ -0,0 +1,15 @@
+#compdef systemd-delta
+
+_delta_type() {
+    local -a _delta_types
+    _delta_types=(masked equivalent redirected overridden unchanged)
+    _values -s , "${_delta_types[@]}"
+}
+
+_arguments \
+    {-h,--help}'[Show this help]' \
+    '--version[Show package version]' \
+    '--no-pager[Do not pipe output into a pager]' \
+    '--diff=[Show a diff when overridden files differ]:boolean:(1 0)' \
+    {-t,--type=}'[Only display a selected set of override types]:types:_delta_type' \
+    ':SUFFIX:(tmpfiles.d sysctl.d systemd/system)'
index 7953455d40ac7fda377564ff120c9d5fc0c17650..1ecb6dc7ee9a22a9d99fb94e42b3bc74a39ff763 100644 (file)
@@ -16,10 +16,16 @@ _systemd_inhibit_command(){
     fi
 }
 
+_inhibit_what() {
+    local _inhibit
+    _inhibit=(shutdown sleep idle handle-power-key handle-suspend-key handle-hibernate-key handle-lid-switch)
+    _values -s : "${_inhibit[@]}"
+}
+
 _arguments \
     {-h,--help}'[Show this help]' \
     '--version[Show package version]' \
-    '--what=[Operations to inhibit]:options:(shutdown sleep idle handle-power-key handle-suspend-key handle-hibernate-key handle-lid-switch)' \
+    '--what=[Operations to inhibit]:options:_inhibit_what' \
     '--who=[A descriptive string who is inhibiting]' \
     '--why=[A descriptive string why is being inhibited]' \
     '--mode=[One of block or delay]' \