zsh & wajig
Passé récemment sous zsh
comme shell par défaut (merci Laurent), je trouve la complétion automatique de mes commandes wajig
très
lente. Pour mémoire, wajig
est une surcouche plutôt sympa des apt*
écrite en Python, et il me sert de gestionnaire de package
principal sur mes Debian et Ubuntu depuis plus d’un an. La complétion automatique étant relativement rapide avec les commandes apt-get
et
compagnie, j’ai décidé de jeter un oeil aux scripts de complétion zsh
pour wajig
en particulier. J’en ai profité pour rajouter le
switch -y/—yes
qui manque à la complétion bien qu’étant une option parfaitement valide et documentée.
Les scripts de complétion se trouvent dans /usr/share/zsh/functions/Completion/Debian
. J’ai repris le script _apt
pour adapter
la section install dans le script _wajig
. Les deux se servent d’un 3e script commun nommé _deb_packages
au cas où ça vous
intéresse. Le bonheur c’est que sans connaître vraiment le langage ou les structures utilisées, comme c’est du script relativement lisible on peut tenter par
des essais/erreurs de modifier ça… et on y arrive !
Voici le résultat sous forme de patch :
% diff _wajig.orig _wajig 11a12 > '(-y —yes)'{-y,—yes}'[assume yes for any questions asked]' \ 44,45c45,46 < _alternative \ < 'packages:package:_deb_packages uninstalled' \ —- > _wanted \ > 'packages:package:_deb_packages "$expl_packages[@]" avail' \
Et les complétions sont redevenues rapides ; le fait de changer _alternative
par _wanted
m’indique d’abord une liste quand
j’appuie sur TAB, plutôt qu’enchainer directement sur les options possibles.
EDIT: une simple recherche Google montre que certains poussent pour que le “framework” de complétion apt pour zsh soit aussi utilisé pour wajig ; à creuser, j’éditerai ce billet si je trouve quelque chose d’intéressant…