diff options
| author | ruki <[email protected]> | 2026-03-25 22:35:07 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2026-03-25 22:35:07 +0800 |
| commit | 78e0d4e9e9752f440b645f86db9d3c8eb14e44ca (patch) | |
| tree | 3c858c059fd443cc33b2714d131b33b2644502e5 | |
| parent | 27168978bb7dd590192be1eee73beea969272b27 (diff) | |
improve zsh completions
| -rw-r--r-- | xmake/scripts/completions/register-completions.zsh | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/xmake/scripts/completions/register-completions.zsh b/xmake/scripts/completions/register-completions.zsh index 2ddbe08e2..1c4c09fa1 100644 --- a/xmake/scripts/completions/register-completions.zsh +++ b/xmake/scripts/completions/register-completions.zsh @@ -18,23 +18,36 @@ # @homepage register-completions.zsh # -# zsh parameter completion for xmake -_xmake_zsh_complete() -{ - local words - read -Ac words - local completions=("$(XMAKE_SKIP_HISTORY=1 XMAKE_ROOT=y xmake lua private.utils.complete 0 nospace "$words")") - reply=( "${(ps:\n:)completions}" ) +# zsh parameter completion for xmake (using compsys) +_xmake_zsh_complete() { + local completions=("${(@f)$(XMAKE_SKIP_HISTORY=1 XMAKE_ROOT=y xmake lua private.utils.complete 0 nospace "$words")}") + compadd -Q -S '' -- ${completions[@]} } -compctl -f -S "" -K _xmake_zsh_complete xmake -# zsh parameter completion for xrepo -_xrepo_zsh_complete() -{ - local words - read -Ac words - local completions=("$(XMAKE_SKIP_HISTORY=1 XMAKE_ROOT=y xmake lua private.xrepo.complete 0 nospace "$words")") - reply=( "${(ps:\n:)completions}" ) +# zsh parameter completion for xrepo (using compsys) +_xrepo_zsh_complete() { + local completions=("${(@f)$(XMAKE_SKIP_HISTORY=1 XMAKE_ROOT=y xmake lua private.xrepo.complete 0 nospace "$words")}") + compadd -Q -S '' -- ${completions[@]} } -compctl -f -S "" -K _xrepo_zsh_complete xrepo +# register completions using compdef (modern zsh completion system) +if (( $+functions[compdef] )); then + compdef _xmake_zsh_complete xmake + compdef _xrepo_zsh_complete xrepo +else + # fallback to compctl for older zsh without compsys + _xmake_zsh_complete_legacy() { + local words + read -Ac words + local completions=("$(XMAKE_SKIP_HISTORY=1 XMAKE_ROOT=y xmake lua private.utils.complete 0 nospace "$words")") + reply=( "${(ps:\n:)completions}" ) + } + _xrepo_zsh_complete_legacy() { + local words + read -Ac words + local completions=("$(XMAKE_SKIP_HISTORY=1 XMAKE_ROOT=y xmake lua private.xrepo.complete 0 nospace "$words")") + reply=( "${(ps:\n:)completions}" ) + } + compctl -f -S "" -K _xmake_zsh_complete_legacy xmake + compctl -f -S "" -K _xrepo_zsh_complete_legacy xrepo +fi |
