1

I try to setup my zsh-completions. I also use oh-my-zsh .

A lot of shell commands provide a some_command completion zsh

and they often suggest sourcing it directly in .zshrc like so:

 source <(kubeone completion zsh)
 source <(tilt completion zsh)
 source <(civo completion zsh)

I can't get it working. Only when I output the command into a file echo "$(kubeone completion zsh)" > ~/.dotfiles/completions/_kubeone.

(That ~/.dotfiles/completions/-path is in my fpath):

fpath=(/usr/local/share/zsh-completions $fpath)
fpath=(~/.dotfiles/completions $fpath)

But that approach is not that neat. I wanna make the use of adding

source $(my_command completion zsh) to my .zsh_rc file.

Interestingly SOME commands are working with that approach: like: source <(kompose completion zsh) but source <(kubeone completion zsh) wont???

Here is an excerpt from my ~/.zshrc:


#!/bin/sh
[ -f ~/.dotfiles/fubectl.source ] && source ~/.dotfiles/fubectl.source

export ZSH_THEME="powerlevel10k/powerlevel10k"
export DOTFILES=$HOME/.dotfiles
export ZSH=$DOTFILES/oh-my-zsh

BUNDLED_COMMANDS=(rubocop)
UNBUNDLED_COMMANDS=(berks foreman mailcatcher rails ruby spin rubocop)
plugins=(zsh-completions zsh-autosuggestions docker fzf bundler brew cask capistrano codeclimate coffee dotenv gem git github grunt helm heroku history iterm2 minikube node redis-cli redis-cli rails rake rake-fast ruby rbenv textmate macos pod zeus terraform)

source $ZSH/oh-my-zsh.sh

complete -o nospace -C /usr/local/bin/terraform terraform

# load autocomplete
fpath=(/usr/local/share/zsh-completions $fpath)
fpath=(~/.dotfiles/completions $fpath)
autoload -U compinit && compinit

source <(kompose completion zsh) # WORKS
source <(kubeone completion zsh) # DONT WORK

(kompose a→tab WORKS)

kubeone a→tab returns only my folder structure

❯ kubeone completion zsh
Application\ Support/          MAMP/                     VirtualBox\ VMs/               oh-my-zsh
Applications/                  Movies/                        Wine\ Files/                   output.json
Coding/                        Music/                         builds/
...
..
.

but should return:

❯ kubeone apply
apply       -- Reconcile the cluster
completion  -- Generates completion scripts for bash and zsh
config      -- Commands for working with the KubeOneCluster configuration manifests
document    -- Generates documentation
help        -- Help about any command
install     -- Install Kubernetes
...
..
.

What I tried so far:

  • after opening terminal rm ~/.zcompdump*, then tried command, then reopened terminal and tried command again.
  • autoload -Uz compinit && compinit -i with different arguments

I think there is some misconfiguration or maybe a brew formula is disturbing?

Here is the complete output of my brew list command, as well my complete .zshrc file: https://gist.github.com/exocode/79c9acfad9828b73d05d2abfa39f1724

Jan
  • 12,992
  • 9
  • 53
  • 89
  • Redirecting the completion into a file that is then autoloaded is a far neater solution. No need to run a dozen commands every time you start a new shell. If you want them guaranteed up-to-date, create a small function which does eval on the output and calls it. – okapi Nov 09 '21 at 18:09

0 Answers0