chiark / gitweb /
zsh-completion: _loginctl/_systemd/_systemd-inhibit improvements
authorEric Cook <llua@gmx.com>
Mon, 22 Jun 2015 22:07:32 +0000 (18:07 -0400)
committerSven Eden <yamakuzure@gmx.net>
Tue, 14 Mar 2017 09:04:18 +0000 (10:04 +0100)
_loginctl: respects the verbose style. which allows a user to get
the pre d5df0d950f8bc behavior of not showing a description for sessions
and users, by default they aren't shown.

zstyle ':completion:*' verbose true
or
zstyle ':completion:*:loginctl*:*' verbose true # or similar
Will show the descriptions.

zstyle ':completion:*' verbose true
and
zstyle ':completion:*:loginctl*:*' verbose false # or similar
Won't show descriptions for loginctl only

_systemd: complete pids for systemd-notify's --pid option.
display a message of the expected argument for other options.

_systemd-inhibit: complete block & delay for --mode
display a message of the expected argument for --who/--why

shell-completion/zsh/_loginctl

index 1e2a4db..6f6ff6e 100644 (file)
@@ -37,7 +37,12 @@ for fun in session-status show-session activate lock-session unlock-session term
       _sys_all_sessions_descr[(i)$_ignore:*]=()
     done
 
-    _describe -t systemd-sessions session _sys_all_sessions_descr _sys_all_sessions "$@"
+    if zstyle -T ":completion:${curcontext}:systemd-sessions" verbose; then
+      _describe -t systemd-sessions session _sys_all_sessions_descr _sys_all_sessions "$@"
+    else
+      local expl
+      _wanted systemd-sessions expl session compadd "$@" -a _sys_all_sessions
+    fi
   }
 done
 
@@ -56,8 +61,14 @@ for fun in user-status show-user enable-linger disable-linger terminate-user kil
       _sys_all_users[(i)$_ignore]=()
       _sys_all_users_descr[(i)$_ignore:*]=()
     done
+
     # using the common tag `users' here, not rolling our own `systemd-users' tag
-    _describe -t users user ${_sys_all_users_descr:+_sys_all_users_descr} _sys_all_users "$@"
+    if zstyle -T ":completion:${curcontext}:users" verbose; then
+      _describe -t users user ${_sys_all_users_descr:+_sys_all_users_descr} _sys_all_users "$@"
+    else
+      local expl
+      _wanted users expl user compadd "$@" -a _sys_all_users
+    fi
   }
 done
 
@@ -72,7 +83,12 @@ done
     _sys_all_seats_descr[(i)$_ignore:*]=()
   done
 
-  _describe -t systemd-seats seat _sys_all_seats_descr _sys_all_seats "$@"
+  if zstyle -T ":completion:${curcontext}:systemd-seats" verbose; then
+    _describe -t systemd-seats seat _sys_all_seats_descr _sys_all_seats "$@"
+  else
+    local expl
+    _wanted systemd-seats expl seat compadd "$@" -a _sys_all_seats
+  fi
 }
 for fun in seat-status show-seat terminate-seat ; do
   (( $+functions[_loginctl_$fun] )) || _loginctl_$fun()