70dfb6ef92f3bedc460e300e94e3456942ff328c
- Author
- Marc Cornellà <hello@mcornella.com>
- Committer
- Marc Cornellà <hello@mcornella.com>
- Date
Message
refactor(composer): improve completion and use official Zsh completion if available
Diff
1diff --git a/plugins/composer/composer.plugin.zsh b/plugins/composer/composer.plugin.zsh
2index ba29503e423598f820278d8b1f4e437e2b369f4a..f2076c2201524ae87354995f05af17ee281801cb 100644
3--- a/plugins/composer/composer.plugin.zsh
4+++ b/plugins/composer/composer.plugin.zsh
5@@ -1,18 +1,34 @@
6-_composer () {
7+## Basic Composer command completion
8+# Since Zsh 5.7, an improved composer command completion is provided
9+if ! is-at-least 5.7; then
10+ _composer () {
11 local curcontext="$curcontext" state line
12 typeset -A opt_args
13- _arguments \
14- '*:: :->subcmds'
15+ _arguments '*:: :->subcmds'
16
17- if (( CURRENT == 1 )) || ( ((CURRENT == 2)) && [ "$words[1]" = "global" ] ) ; then
18- compadd $(_composer_get_command_list)
19+ if (( CURRENT == 1 )) || ( (( CURRENT == 2 )) && [[ "$words[1]" = "global" ]] ); then
20+ # Command list
21+ local -a subcmds
22+ subcmds=("${(@f)"$($_comp_command1 --no-ansi 2>/dev/null | awk '
23+ /Available commands/{ r=1 }
24+ r == 1 && /^[ \t]*[a-z]+/{
25+ gsub(/^[ \t]+/, "")
26+ gsub(/ +/, ":")
27+ print $0
28+ }
29+ ')"}")
30+ _describe -t commands 'composer command' subcmds
31 else
32- compadd $(_composer_get_required_list)
33+ # Required list
34+ compadd $($_comp_command1 show -s --no-ansi 2>/dev/null \
35+ | sed '1,/requires/d' \
36+ | awk 'NF > 0 && !/^requires \(dev\)/{ print $1 }')
37 fi
38-}
39+ }
40
41-compdef _composer composer
42-compdef _composer composer.phar
43+ compdef _composer composer
44+ compdef _composer composer.phar
45+fi
46
47
48 ## Aliases