diff options
| author | Anton Bobov <anton@bobov.name> | 2023-08-29 20:52:12 +0500 |
|---|---|---|
| committer | Anton Bobov <anton@bobov.name> | 2023-08-29 20:52:46 +0500 |
| commit | 951f9d198e4f02be4fd4cf74fbc0676a190cd127 (patch) | |
| tree | f013905b4545ba4a90685bdd0e8c48f71237f1e6 /files/.zsh/rc | |
| parent | cca7b2932ff9860155687f803e46a77f0f1940e2 (diff) | |
[zsh] Add completion generation
Diffstat (limited to 'files/.zsh/rc')
| -rw-r--r-- | files/.zsh/rc/S20_environment | 1 | ||||
| -rw-r--r-- | files/.zsh/rc/S40_completion | 29 |
2 files changed, 26 insertions, 4 deletions
diff --git a/files/.zsh/rc/S20_environment b/files/.zsh/rc/S20_environment index 115ae1f..e6c47e2 100644 --- a/files/.zsh/rc/S20_environment +++ b/files/.zsh/rc/S20_environment @@ -8,6 +8,7 @@ fi path=(~/bin ~/.local/bin $path) fpath=($HOME/.zsh/zsh-completions/src $fpath) +fpath=($HOME/.zsh/zsh-completions-cached $fpath) # To force rebuild zcompdump: # rm -f ~/.zcompdump; compinit diff --git a/files/.zsh/rc/S40_completion b/files/.zsh/rc/S40_completion index 195c16b..233eeb4 100644 --- a/files/.zsh/rc/S40_completion +++ b/files/.zsh/rc/S40_completion @@ -40,20 +40,41 @@ zstyle ':completion:*:*:vi(m|):*:*files' ignored-patterns '*?.(aux|dvi|ps|pdf|bb # Ledger completion like hledger compdef ledger=hledger -compdef fdfind=fd - # Completing generic gnu commands # https://github.com/zsh-users/zsh-completions/blob/master/zsh-completions-howto.org -compdef _gnu_generic lshw df duplicity tldr +compdef _gnu_generic lshw df duplicity compdef _gnu_generic -p 'pg_*' +compdef _command tldr + __load_completion_if_exists() { [[ -f "$1" ]] && source "$1" } +__load_or_generate() { + if ! command -v "$1" >/dev/null ; then + return + fi + local target_file="/home/anton/.zsh/zsh-completions-cached/_$1" + local generate_command="$2" + if [ ! -f "$target_file" ] ; then + eval "$generate_command" > "$target_file" + fi +} + __load_completion_if_exists /etc/bash_completion.d/youtube-dl.bash-completion __load_completion_if_exists /usr/share/zsh/vendor-completions/_git-extras -unset -f __load_completion_if_exists +__load_or_generate kubectl "kubectl completion zsh" +__load_or_generate helm "helm completion zsh" +__load_or_generate fdfind 'curl -sL "https://raw.githubusercontent.com/sharkdp/fd/master/contrib/completion/_fd"' +__load_or_generate restic 'restic generate --zsh-completion /dev/stdout' +__load_or_generate docker 'curl -sL "https://raw.githubusercontent.com/docker/cli/master/contrib/completion/zsh/_docker"' +__load_or_generate docker-compose 'curl -sL "https://raw.githubusercontent.com/docker/compose/1.28.x/contrib/completion/zsh/_docker-compose"' +__load_or_generate watson 'curl -sL "https://raw.githubusercontent.com/TailorDev/Watson/master/watson.zsh-completion"' + +compdef fdfind=fd + +unset -f __load_completion_if_exists __load_or_generate # vim: et ft=zsh fdm=marker : |
