Macros dans Emacs
Il arrive que quand on veut nettoyer un bout de code, on n'ait pas le courage de réfléchir à une regex de la mort qui tue. Dans ces cas là, soit on ne sait pas et on y va à la main (c'est chiant...), soit on utilise les macros!
Qu'est-ce qu'une macro dans Emacs? Le principe est simple, il s'agit tout simplement d'enregistrer une suite d'actions puis de les ré-exécuter autant de fois qu'on veut.
Admettons qu'on veuille formater le bout de code suivant (le symbole "|" indique où se trouve le curseur):
byte[] stuff = { |aabb ccdd eeff 1122 3344 5566 7788 9900 };
Commençons par lancer l'enregistrement de macro avec la combinaison de touche C-x (
, puis effectuons l'action sur le premier bout de tableau (il faut que l'action soit reproductible n fois), ce qui donne 0 x C-f C-f , <spc> 0 x C-f C-f , C-f
et on arrête l'enregistrement avec la combo C-x )
ce qui donne:
byte[] stuff = { 0xaa, 0xbb, |ccdd eeff 1122 3344 5566 7788 9900 };
À présent on peut ré-exécuter cette macro avec la commande C-x e
autant de fois qu'il y a de groupes dans le tableau (il y a 7 groupes) avec la commande C-u 7 C-x e
, et on obtient le tableau (presque) tout formatté:
byte[] stuff = { 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x00, |};
Il ne reste plus qu'à enlever la virgule en trop et voilà.