summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorCarlo Sala <carlosalag@protonmail.com>2023-07-20 10:43:56 +0200
committerCarlo Sala <carlosalag@protonmail.com>2023-07-20 10:43:56 +0200
commit7d5e12500a2ba0b575ffafcbb516568973528730 (patch)
tree90854b8aa4bdbdc46d372ce0a15b9781a385e2b4 /plugins
parentc4392a4da31efee36f29a62d3951d5c0fcd7d4e6 (diff)
downloadzsh-7d5e12500a2ba0b575ffafcbb516568973528730.tar.gz
zsh-7d5e12500a2ba0b575ffafcbb516568973528730.tar.bz2
zsh-7d5e12500a2ba0b575ffafcbb516568973528730.zip
feat(docker): add `legacy-completion` option
Diffstat (limited to 'plugins')
-rw-r--r--plugins/docker/README.md11
-rw-r--r--plugins/docker/docker.plugin.zsh27
2 files changed, 24 insertions, 14 deletions
diff --git a/plugins/docker/README.md b/plugins/docker/README.md
index 512b5d17c..0ab2e41fb 100644
--- a/plugins/docker/README.md
+++ b/plugins/docker/README.md
@@ -30,6 +30,15 @@ file**, but be aware of the side effects:
> zstyle ':completion:*:*:docker-*:*' option-stacking yes
> ```
+### Use old-style completion
+
+If the current completion does not work well for you, you can enable legacy completion instead with the
+following setting. See https://github.com/ohmyzsh/ohmyzsh/issues/11789 for more information.
+
+```zsh
+zstyle ':omz:plugins:docker' legacy-completion yes
+```
+
## Aliases
| Alias | Command | Description |
@@ -58,7 +67,7 @@ file**, but be aware of the side effects:
| drm | `docker container rm` | Remove the specified container(s) |
| drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) |
| dst | `docker container start` | Start one or more stopped containers |
-| drs | `docker container restart` | Restart one or more containers
+| drs | `docker container restart` | Restart one or more containers |
| dsta | `docker stop $(docker ps -q)` | Stop all running containers |
| dstp | `docker container stop` | Stop one or more running containers |
| dtop | `docker top` | Display the running processes of a container |
diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh
index 7777048a3..7e657f2df 100644
--- a/plugins/docker/docker.plugin.zsh
+++ b/plugins/docker/docker.plugin.zsh
@@ -41,21 +41,22 @@ fi
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
+# If the completion file doesn't exist yet, we need to autoload it and
+# bind it to `docker`. Otherwise, compinit will have already done that.
+if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
+ typeset -g -A _comps
+ autoload -Uz _docker
+ _comps[docker]=_docker
+fi
+
{
+ # `docker completion` is only available from 23.0.0 on
# docker version returns `Docker version 24.0.2, build cb74dfcd85`
# with `s:,:` remove the comma after the version, and select third word of it
- local _docker_version=${${(s:,:z)"$(command docker --version)"}[3]}
- # `docker completion` is only available from 23.0.0 on
- if is-at-least 23.0.0 $_docker_version; then
- # If the completion file doesn't exist yet, we need to autoload it and
- # bind it to `docker`. Otherwise, compinit will have already done that.
- if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
- typeset -g -A _comps
- autoload -Uz _docker
- _comps[docker]=_docker
- fi
- command docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker"
- else
- command cp "${0:h}/completions/_docker" "$ZSH_CACHE_DIR/completions/_docker"
+ if zstyle -t ':omz:plugins:docker' legacy-completion || \
+ ! is-at-least 23.0.0 ${${(s:,:z)"$(command docker --version)"}[3]}; then
+ command cp "${0:h}/completions/_docker" "$ZSH_CACHE_DIR/completions/_docker"
+ else
+ command docker completion zsh >| "$ZSH_CACHE_DIR/completions/_docker"
fi
} &|