summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Giokas <1007380@gmail.com>2013-08-14 22:09:14 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-08-15 11:29:08 -0400
commit298b9e23a6e21161a7fe486aab94944a58d5e90c (patch)
treef6a92e5e86445f2c91241fc5fee02da93d3ceb3a
parent1acbb95c2b58373909d1e7a09a2eed0f6595cf6e (diff)
zsh_completion: Allow specifying multiple arguments
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.
-rw-r--r--Makefile.am1
-rw-r--r--shell-completion/zsh/_systemctl16
-rw-r--r--shell-completion/zsh/_systemd11
-rw-r--r--shell-completion/zsh/_systemd-delta15
-rw-r--r--shell-completion/zsh/_systemd-inhibit8
5 files changed, 38 insertions, 13 deletions
diff --git a/Makefile.am b/Makefile.am
index 641e92fd79..5d3599386f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -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 = \
diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl
index dbe168a609..cc2df3c828 100644
--- a/shell-completion/zsh/_systemctl
+++ b/shell-completion/zsh/_systemctl
@@ -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]' \
diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd
index 7aab52d5b6..fe39de8c38 100644
--- a/shell-completion/zsh/_systemd
+++ b/shell-completion/zsh/_systemd
@@ -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
index 0000000000..6abb6fc217
--- /dev/null
+++ b/shell-completion/zsh/_systemd-delta
@@ -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)'
diff --git a/shell-completion/zsh/_systemd-inhibit b/shell-completion/zsh/_systemd-inhibit
index 7953455d40..1ecb6dc7ee 100644
--- a/shell-completion/zsh/_systemd-inhibit
+++ b/shell-completion/zsh/_systemd-inhibit
@@ -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]' \