summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2026-03-25 22:35:07 +0800
committerruki <[email protected]>2026-03-25 22:35:07 +0800
commit78e0d4e9e9752f440b645f86db9d3c8eb14e44ca (patch)
tree3c858c059fd443cc33b2714d131b33b2644502e5
parent27168978bb7dd590192be1eee73beea969272b27 (diff)
improve zsh completions
-rw-r--r--xmake/scripts/completions/register-completions.zsh45
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