L'auto-complétion programmable en Bash - partie 9
Cet article est la suite de: L’auto complétion programmable en bash: partie 8.
Une complétion améliorée
On voit aujourd’hui deux fonctions bien utiles lors de l’écriture
de votre script d’auto-complétion: _get_comp_words_by_ref
et
compopt
.
On va ajouter une option --format=
à notre commande test
. Ce que
je veux, c’est pouvoir écrire quelque chose comme ça:
$ mytool test --format=documentation
Il faut donc que:
$ mytool test -[TAB]
nous donne ceci:
$ mytool test --format=
Mais contrairement à ce qu’il se passe jusqu’ici, je ne veux pas
que l’auto-complétion ajoute un espace après --format=
.
Voici tout d’abord le script qui fait ça :
Et maintenant, je vais détailler les nouveautés. D’abord, vous avez peut-être remarqué que la ligne:
a remplacé les deux lignes suivantes (voir article précédent):
C’est plus simple, plus lisible, plus propre. Cette fonction,
_get_comp_words_by_ref
, se trouve dans le script /etc/bash_completion
,
que je vous invite à étudier. Ce fichier défini plusieurs fonctions
utiles pour la complétion.
Voyons maintenant l’ajout de la nouvelle option:
La nouveauté est ici compopt -o nospace
. La fonction compopt
permet
d’allumer/éteindre certaines options pour la complétion en cours. Ici on
demande de ne pas ajouter d’espace à la fin de la chaîne renvoyée par
la complétion.
À demain.