Etags est, comme on peut le deviner, un outil d'Emacs qui gère les tags dans les codes sources. Les tags en question sont des pointeurs vers les fonctions, variables, defines et autres symboles qui permettent de savoir où ils sont placés dans le code source.

L'idée est de maintenir un fichier contenant ces positions (le fichier TAGS) puis de l'utiliser comme base de données pour tout travail ultérieur de recherche. Ce fichier est créé avec la commande suivante (exemple pour du code C, mais ça marche avec tous les langages majeurs) :

  $ etags *.c

En mode d'édition, si on désire savoir où est définie telle fonction, on déplace le curseur sur un appel à cette fonction et on appuie sur M-.. Emacs demande où se trouve le fichier TAGS si c'est la première utilisation (et fait une proposition de nom), il suffit ensuite de valider. Et là, magie!, Emacs ouvre tout seul comme un grand le fichier contenant la fonction appelée et positionne la marque au début de la fonction.

Il est également possible d'effectuer une recherche sur un symbole particulier. Par exemple, vous voulez savoir à quel endroit du code telle fonction est appelée et comment. Facile ! Tapez M-x tags-search puis le nom de votre fonction. Emacs déplacera le point vers la prochaine occurence de la définition ou de l'appel de votre fonction, tout en ignorant les commentaires. L'appui sur M-, permettra de passer à l'occurence suivante.

Finies les longues minutes à rechercher les fonctions d'un code à coups de grep ... encore une victoire de canard !