Cet après-midi, je travaillais à commenter du code source dans un document et je devais faire référence aux numéros de lignes pour les expliquer point par point. Cependant, le code source n'en contenait pas (normalement c'est l'éditeur qui les ajoute en marge) et je voulais éviter de placer un imprimé d'écran car je voulais que texte puisse être sélectionné facilement.
Pour y arriver, j'ai utilisé une fonctionnalité de TextPad, un éditeur texte très puissant. Parmi la foule de fonctions qu'il offre, il y en a une qui permet de faire du remplacement à partir d'une expression régulière (fonction disponible dans plusieurs éditeurs) et de façon plus spécifique, d'insérer un numéro séquentiel à l'endroit indiqué.
Par exemple, en utilisant le caret "^" pour identifier le début de ligne, on pourra utiliser l'expression \i pour créer la séquence. Sans paramètre additionnel, elle débutera à 1. Sinon, on pourra faire suivre entre parenthèses le nombre de départ, suivi du saut d'incrémentation (qui peut aussi être négatif). Pour s'assurer que le code est indenté correctement par rapport aux numéros de lignes, j'y ajoute une tabulation.
- Appuyez sur F8 (ou Menu Search / Replace)
- Find what : ^
- Replace with : \i\t
- Cliquez sur le bouton Replace all
Sinon, NotePad++ peut aussi insérer des numéros incrémentiels, mais il n'est pas encore aussi paufiné que TextPad. Pour y accéder, il faudra aussi utiliser le plugin TextFX / Edit / Insert (Clipboard) through line. Avant d'exécuter cette commande, vous devrez écrire le pattern et le copier au presse-papier. Il sera utilisé pour effectuer le remplacement. Tapez le symbole dièse (#), suivi de nombre de départ et du saut (#1+1 = départ à 1 + saut de 1). Par défaut, # seul suffit pour indiquer une racine de 0 avec une incrémentation de 1. Entrez le pattern, sélectionnez-le et copiez-le (CTRL+C). Ensuite, sélectionnez les lignes où appliquer ce traitement et exécutez la commande "Insert (Clipboard) through line" à partir du menu. Vous remarquerez que le numéro de ligne sera collé sur le code. Pour le séparer, on devra faire un remplacement avec une regexp du genre "^([0-9]+)" qu'on remplacera par "\1\t" (premier pattern trouvé, suivi d'une tabulation).
Toutes ces étapes peuvent être évitées si vous utilisez TextPad. Contrairement à NotePad++, il n'est pas gratuit (30$ US) mais il a l'avantage de posséder ce genre de petits atouts. Si vous êtes programmeur, assurez-vous au moins d'utiliser un ou l'autre.