L'auto-complétion programmable en Bash - partie 7
Cet article est la suite de: L’auto complétion programmable en bash: partie 6.
Un motif général et basique, la suite
Après avoir regardé la variable COMPREPLY
dans le dernier article,
on étudie aujourd’hui les variables COMP_WORDS
et COMP_CWORD
.
On va encore modifier notre script, cette fois pour examiner le
contenu de la variable COMP_WORDS
:
N’oubliez pas de sourcer:
$ source /etc/bash_completion.d/mytool
Testons:
$ mytool foo bar[TAB]
est remplacé par:
$ mytool foo mytool foo bar
On voit que COMP_WORDS
est un tableau qui contient chaque éléments
de notre ligne de commande, au moment où celle ci est envoyée à
l’auto-complétion.
Voyons maintenant COMP_CWORD
:
Si je tapes:
$ mytool foo bar[TAB]
Cela va être remplacé par:
$ mytool foo 2
Donc, COMP_CWORD
contient l’index de l’élément de la ligne de
commande dans lequel se trouve le curseur.
On a maintenant tous les éléments en main pour comprendre le script présenté la dernière fois comme le motif de base pour l’auto-complétion:
Il reste juste à expliquer la dernière ligne:
La fonction complete
, interne à Bash, s’occupe bien sûr de l’auto-complétion
du programme mytool
. Le nombre d’options possibles est important, vous pouvez
jeter un oeil au manuel si vous avez le temps. On se contentera ici de l’option
-F
. Cette option est très intéressante, elle prend en argument le nom d’une
fonction (ici _mytool
) qui va calculer la complétion. Cette fameuse option
-F
permet aussi à complete
de savoir qu’elle doit chercher des résultats
dans la variable COMPREPLY
. Notez la convention utilisée: la fonction
_mytool
calcule la complétion du programme mytool
.
À demain.