From 72c4e3d919438665cc1c605e6bb5697285f514ce Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Mon, 19 Apr 2021 02:21:30 +0100 Subject: [PATCH] fix(gcloud): lazy-load gcloud shell completion on first use Shell completion for gcloud seems to take around 50-100ms to load, so let's only do that on first use, instead of during startup of every shell. --- zsh/google-cloud.zsh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/zsh/google-cloud.zsh b/zsh/google-cloud.zsh index b6fa161..c475550 100644 --- a/zsh/google-cloud.zsh +++ b/zsh/google-cloud.zsh @@ -6,6 +6,19 @@ if [ -f '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.i source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc' fi -if [ -f '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' ]; then - source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' +# Lazy load gcloud shell completion on first use. +if command-exists gcloud; then + _python_argcomplete() { + load-gcloud-completion + _python_argcomplete "$@" + } + + compctl -K _python_argcomplete gcloud + + load-gcloud-completion() { + unset -f load-gcloud-completion _python_argcomplete + if [ -f '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' ]; then + source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc' + fi + } fi