# Auto-complétion

L'auto-complétion ou autocomplétion ou complétion automatique, souvent simplement complétion, parfois complètement ou complètement automatique, est une fonctionnalité informatique permettant à l'utilisateur de limiter la quantité d'informations qu'il saisit avec son clavier, en se voyant proposer un complément qui pourrait convenir à la chaîne de caractères qu'il a commencé à taper. De nombreux logiciels possèdent cette fonctionnalité : les éditeurs de texte prévus pour l'édition de code source, les traitements de texte, les interpréteurs de commandes ou encore les navigateurs web, ainsi que certains systèmes de saisie intuitive installés sur les téléphones mobiles.
La complétion demande au logiciel de pouvoir prévoir le mot ou la phrase que l'utilisateur est susceptible de taper, avant que celui-ci ne l'ait entièrement saisi. Cette prévision peut se faire :
* à partir des mots déjà saisis, ailleurs dans le document en cours d'édition ou lors d'éditions précédentes ;
* à partir d'une ou plusieurs listes de mots ou dictionnaires, préétablis par l'utilisateur ou fournis avec le logiciel ;
* à partir de caractéristiques de l'application, par exemple les adresses d'un carnet d'adresses pour un client de messagerie, les marque-pages d'un navigateur web ou encore les fichiers d'un répertoire ou les commandes dans l'interpréteur de commandes d'un système d'exploitation ;
* la structure du document édité de l'utilisateur, par exemple la grammaire d'un langage informatique dans un éditeur de code source.
La complétion permet d'accélérer la saisie sur un ordinateur, ce qui rend l'interaction avec les logiciels moins pénible et plus efficace. Il permet également de limiter les erreurs de saisie, en entrant sans intervention humaine les caractères qu'il reste à taper. Cette dernière qualité se vérifie essentiellement sur les mots longs, pour lesquels il suffit de taper les premières lettres.

## Navigateurs web

Dans les navigateurs web, la complétion est réalisé dans la barre d'adresse, ainsi que dans certains champs des formulaires les plus souvent utilisés, comme ceux des moteurs de recherche par exemple. La complétion des URL est particulièrement pratique, car les adresses sont souvent fastidieuses et longues à écrire, et il n'est pas rare de commettre une erreur de saisie.

## Clients de messagerie

Dans les clients de messagerie, la complétion est généralement proposée pour faciliter la saisie des adresses des destinataires. Comme le nombre d'adresses possibles pour un seul utilisateur est en principe limité, le moteur de complétion peut retrouver une adresse complète à partir des premiers caractères saisis. À défaut, le logiciel peut proposer à l'utilisateur de choisir l'adresse parmi celles qui sont possibles, compte tenu des caractères déjà tapés.

## Éditeurs de code source

Dans un code source, la complétion est facilitée car la structure du texte en cours de saisie est imposée par le langage de programmation. Il n'existe habituellement qu'un nombre limité de mots possibles dans chaque situation, tels que des noms de variables ou de fonctions. Les notions de portée et d'espace de noms de certains langages limitent davantage encore le nombre de mots possibles.
Afin de rendre la complétion aussi pratique que possible, certains éditeurs de code source disposent d'éléments graphiques spécifiques, tels que des boîtes de sélection contextuelles (par exemple Intellisense de Microsoft). Ces éléments graphiques affichent les différentes possibilités pour la complétion, en tenant compte de ce que le programmeur a déjà saisi. Ils lui permettent également de choisir le mot ou l'expression complète dans une liste s'il reste une ambiguïté. Cette facilité graphique apporte un confort important, en particulier en programmation objet, car elle épargne au programmeur la connaissance exhaustive des membres des classes qu'il doit manipuler. Il n'est pas inopportun de considérer dans ce cas la complétion comme un complément documentaire, tout autant qu'une méthode de saisie.
Un bénéfice supplémentaire de la complétion de code est qu'il encourage le programmeur à utiliser des noms de variables ou de fonctions plus longs, plus descriptifs, ce qui aboutit à du code plus lisible. En effet, la complétion facilite la saisie de mots longs, dont la frappe complète est fastidieuse et sujette à des erreurs, particulièrement pour les identifiants dont la casse est capitalisée (par exemple nNombreDeMotsParLigne).
Certains moteurs de complétion pour le code sont capables de comprendre des abréviations implicites et de les développer. Par exemple, pour saisir l'identifiant nNombreDeMotsParLigne, le programmeur tape les premiers caractères de la chaîne nNDMPL, qui représente la première lettre de chacun des mots composant l'identifiant complet, jusqu'à ce que l'ambiguïté soit levée. La complétion remplace alors les caractères par l'identifiant correct.

## Traitements de texte

Dans les logiciels de traitement de texte, la complétion réduit la saisie nécessaire pour certaines tâches répétitives. La source des mots possibles est établie d'après les mots déjà saisis dans le document ou d'après une liste de mots habituels définie par l'utilisateur. Certains traitements de texte reconnaissent également certains mots ou formats (tel que la date du jour) et proposent spontanément la complétion. Actuellement, OpenOffice, StarOffice, Microsoft Office et KOffice proposent la complétion (de façon plus ou moins élaborée).

## Interpréteurs de commandes

Dans l'interpréteur de commandes de certains systèmes d'exploitation, tels que bash sur Unix ou la console en ligne de commande cmd.exe de Windows NT, et plus généralement sur les systèmes disposant d'une interface en ligne de commande, la complétion est possible en mémorisant le nom des entités auxquelles l'utilisateur est susceptible de vouloir accéder (principalement les fichiers et les commandes). Traditionnellement, la complétion est déclenchée en tapant les premières lettres du mot à compléter, puis en appuyant sur la touche Tab.
Par exemple, si le seul fichier du répertoire dont le nom commence par un x est xNomDeFichierTrèsLong, alors l'utilisateur pourra se contenter de taper le x puis de déclencher la complétion. Si plusieurs fichiers ou commandes commencent par la même séquence de lettres, la complétion ajoute autant de lettres qu'il peut en conservant les mêmes mots candidats. L'utilisateur doit ensuite taper des lettres supplémentaires afin de lever l'ambiguïté.
Exemple avec un shell Unix (ce que l'utilisateur a tapé figure en gras, <Tab> signifie que l'utilisateur a appuyé sur la touche Tab) :
Ce qui donne :

## Technique de programmation

Pour programmer un comportement de complétion, un des moyens est d'utiliser un arbre n-aire, construit à partir d'un dictionnaire, ce qui permet très simplement de fournir une liste de mots complétés.