external.zsh 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/zsh
  2. _lazy_load_completion() {
  3. local cmd="$1"
  4. local completion_cmd="$2"
  5. eval "${cmd}() {
  6. unfunction $cmd
  7. eval \"\$($completion_cmd)\"
  8. $cmd \"\$@\"
  9. }"
  10. }
  11. for completion_file in ~/.local/share/zsh/*-autocomplete.zsh(N); do
  12. if [ -f "$completion_file" ]; then
  13. source "$completion_file"
  14. fi
  15. done
  16. # Use 'which' instead of 'command -v' for faster checks (as per optimization article)
  17. if which eza >/dev/null 2>&1; then
  18. compdef _ls eza
  19. fi
  20. if which kubefwd >/dev/null 2>&1; then
  21. _lazy_load_completion kubefwd "kubefwd completion zsh"
  22. fi
  23. if which bombadil >/dev/null 2>&1; then
  24. _lazy_load_completion bombadil "bombadil generate-completions zsh"
  25. fi
  26. if which rop >/dev/null 2>&1; then
  27. eval "$(rop completion zsh)"
  28. fi
  29. if which goq >/dev/null 2>&1; then
  30. eval "$(goq completion zsh)"
  31. fi
  32. if which drop >/dev/null 2>&1; then
  33. eval "$(drop completion zsh)"
  34. fi
  35. _lazy_load() {
  36. local cmd="$1"
  37. local loader="$2"
  38. eval "${cmd}() {
  39. unfunction $cmd
  40. eval \"\$($loader)\"
  41. $cmd \"\$@\"
  42. }"
  43. }
  44. _lazy_load kubectl "kubectl completion zsh"