Diff
1diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh
2index 06a191a10727ba15ce7e11cf997c51f0d7cb5bf7..e8aad9230864beee6ef50fef409c8ec8f4823fec 100644
3--- a/plugins/docker/docker.plugin.zsh
4+++ b/plugins/docker/docker.plugin.zsh
5@@ -1,13 +1,3 @@
6-# If the completion file doesn't exist yet, we need to autoload it and
7-# bind it to `docker`. Otherwise, compinit will have already done that.
8-if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
9- typeset -g -A _comps
10- autoload -Uz _docker
11- _comps[docker]=_docker
12-fi
13-
14-docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker" &|
15-
16 alias dbl='docker build'
17 alias dcin='docker container inspect'
18 alias dcls='docker container ls'
19@@ -41,3 +31,22 @@ alias dvls='docker volume ls'
20 alias dvprune='docker volume prune'
21 alias dxc='docker container exec'
22 alias dxcit='docker container exec -it'
23+
24+if (( ! $+commands[docker] )); then
25+ return
26+fi
27+
28+{
29+ # `docker completion` is only available from 23.0.0 on
30+ local _docker_version=$(docker version --format '{{.Client.Version}}' 2>/dev/null)
31+ if is-at-least 23.0.0 $_docker_version; then
32+ # If the completion file doesn't exist yet, we need to autoload it and
33+ # bind it to `docker`. Otherwise, compinit will have already done that.
34+ if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
35+ typeset -g -A _comps
36+ autoload -Uz _docker
37+ _comps[docker]=_docker
38+ fi
39+ docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker"
40+ fi
41+} &|