Premiers pas avec Emacs et Ada

De Ensiwiki
Révision de 23 juillet 2015 à 20:14 par Moym (discussion | contributions) (Raccourcis utiles)

Aller à : navigation, rechercher

Emacs ... un éditeur de texte

Emacs est un éditeur de texte, très puissant, extensible, même s'il n'est pas toujours très intuitif. Il est très puissant, certains disent qu'il peut tout faire sauf le café, ils se trompent.

D'abord, qu'est-ce que ça veut dire, un « Éditeur de texte » ? Vous avez sûrement déjà utilisé un « Traitement de texte », qui permet de taper du texte, de le mettre en forme (gras, italique, taille et choix des polices, …). Un éditeur de texte édite du texte brut : pas de mise en forme, pas de dessins, juste du texte. Une suite de caractères, quoi. Mais en informatique, on trouve du texte brut partout : langage de programmation, fichiers de configuration de beaucoup de logiciels, …

On pourrait essayer d'éditer le texte d'un programme Ada avec un traitement de texte classique, mais on aurait énormément de fonctionnalités inutiles, et par contre, il manquerait énormément de choses.

Ouvrir un fichier

Commencez par télécharger le fichier hello.adb, et sauvegardez-le sur votre compte.

Un moyen simple d'ouvrir ce fichier dans Emacs est de lancer, en ligne de commande :

emacs hello.adb

Un autre moyen, c'est de lancer Emacs, puis dans le menu File, choisir Open File…, et choisir le fichier à ouvrir.

Emacs open.png

Quand on a plusieurs fichiers sur lesquels on veut travailler en même temps, il faut ouvrir chaque fichier depuis une fenêtre Emacs déjà ouverte, sinon, on lance beaucoup de processus Emacs, c'est moins pratique, et ça consomme beaucoup plus de ressources de l'ordinateur.

Créer un fichier

Quand on lance la commande emacs sans argument, une fenêtre s'ouvre, mais elle ne correspond à aucun fichier. Si on veut travailler sur un nouveau fichier, il faut créer ce fichier avant d'entrer son contenu (ce qui permet à Emacs de savoir à quel langage de programmation il doit s'adapter) :

telesun> emacs

Emacs-visit-new-file.png

Une autre solution est de lancer la commande emacs avec le nom du fichier a créer :

telesun> emacs nouveau_fichier.adb

Emacs et l'Ada

Revenons à notre fichier hello.adb. Vous avez maintenant une fenêtre Emacs ouverte, avec le contenu de ce fichier affiché.

Coloration syntaxique

Premier constat : les mots clés (begin, end, …) sont en couleur. Ah, mais on avait pourtant dit qu'il n'y avait pas de mise en forme dans un fichier texte ?!? Et non, il n'y a pas de couleurs dans le fichier, mais Emacs nous l'affiche quand même avec des couleurs. Vérifiez si vous voulez en faisant « less hello.adb » dans un terminal, il n'y a pas de couleur.

Emacs coloring.png

Indentation

Deuxième constat : le code est affreux. C'est indenté n'importe comment. Ne vous avisez pas de rendre un code comme celui-là à vos enseignants !!! Bon, pas de panique, Emacs sait faire l'indentation très bien. Dans le menu « Edit », faites « Select All », puis dans le menu « Ada », sous-menu « Edit », faites « Indent lines in selection ». Et hop, magie ! On peut aussi simplement appuyer sur la touche TAB après avoir sélectionné une portion de code, et Emacs appliquera l'indentation automatique sur cette portion.

Plus simple, pour indenter une ligne, il suffit d'appuyer sur la touche TAB. Au final, on a toujours du code parfaitement indenté, et sans grand effort.

Compilation

Le programme Ada que vous avez sous les yeux est un programme « source », c'est à dire lisible par un humain, mais pas exécutable directement par la machine. Pour l'exécuter, il faut d'abord le compiler.

Essayons d'abord en dehors d'Emacs. Dans un terminal, faites :

telesun> gnatmake hello.adb

Emacs-compilation-term.png

Ah, pas de chance, il y a une erreur de syntaxe dans le fichier. gnatmake vous dit que c'est à la ligne 6. On peut donc ouvrir le fichier, aller à la ligne 6, et corriger l'erreur.

Quand vous travaillerez sur des fichiers plus gros, aller à la N-ième ligne peut être long. Heureusement, Emacs vous fournit une fonction pour vous rendre à une ligne donnée d'un fichier : menu « Edit → Go To → Goto Line... » :

Emacs-goto-line.png

Pour aller plus vite, on peut utiliser le raccourci clavier donné à droite dans le menu, « M-g g » : Appuyez sur la touche Alt (qu'Emacs appèle touche « Meta », d'où le M dans la notation) et sur la touche « g », puis relâchez l'ensemble, puis appuyez sur la touche « g » seule. Emacs demande alors le numéro de ligne en bas de la fenêtre.

Il existe d'autre façons de compiler et corriger les erreurs depuis Emacs, que vous apprendrez plus tard (les plus curieux pourront consulter la page Compiler un programme Ada depuis Emacs par exemple).

Sauver

On ajoute donc le « ; » manquant à la ligne 6. L'erreur de syntaxe est corrigée à l'écran, mais ce n'est pas le fichier hello.adb qu'on a édité, c'est une image en mémoire de ce fichier (ce qu'Emacs appelle un « buffer »). Il nous reste à sauver pour pouvoir recompiler : menu File, Save.

Recompilez le programme comme précédemment, et exécutez-le en ligne de commande :

  telesun> ./hello

Emacs execution.png

Édition basique

On va ajouter la ligne suivante au programme :

Put_Line("L'ENSIMAG, c'est super!");

Placez votre curseur à la fin de la ligne

Put_Line("Bienvenue à l'ENSIMAG!!");

et appuyez sur la touche Entrée. On parlait d'indentation tout à l'heure, justement, Emacs place le curseur à l'endroit où il faut pour que ce soit correctement indenté.

Tapez Put, puis, pour ne pas trop se fatiguer, faites M-/, c'est à dire, appuyez sur la touche Alt, puis sur la touche « / », puis relâchez. Hop, Emacs complète avec les autres mots qui commencent pareil et que vous avez déjà tapés. Là, ça tombe pile : Put_Line, et on peut continuer. Si la complétion n'avait pas été la bonne, on aurait pu refaire M-/ autant de fois que nécessaire pour tomber sur la bonne.

Rechercher une chaine

La recherche de chaine dans Emacs est un peu différente de ce dont vous avez sans doute l'habitude, mais très pratique :

  • C-s (control-s): Emacs n'ouvre pas de nouvelle fenêtre, mais demande la chaine à rechercher dans le « minibuffer » (en bas de la fenêtre)
  • On commence à entrer la chaine, Emacs cherche au fur et à mesure qu'on tape.
  • Pour aller à l'occurence suivante, C-s à nouveau.

Emacs-search.png

Exploration du menu Options

Les fonctionnalités les plus courantes d'Emacs sont disponibles dans le menu. Regardons le menu Options.

Par exemple, sélectionnez Paren Match Highlighting. Cette option active la correspondance visuelle des parenthèses. Essayez de taper, par exemple, « X : Integer := 4 * (3 - (2 + 1)); ». Quand le curseur est sur une parenthèse ouvrante, ou derrière une parenthèse fermante, la parenthèse correspondante se met en couleur.

Emacs paren-match.png

Il y en a d'autres. On peux noter en particulier :

  • « Active region highlighting » (mise en évidence de la sélection quand on sélectionne du texte au clavier, avec Ctrl-espace) et « C-x/C-c/C-v Cut and Paste » (raccourcis claviers usuels sous Windows pour le copier/coller) pour être moins dépaysés si vous avez l'habitude de Windows, voire Mac OS X.
  • Show/Hide → Speedbar, pour naviguer dans vos fichiers et vos fonctions.
  • Options → Customize Emacs → Specific Option → “inhibit-splash-screen” : toggle pour mettre a on, puis State → Save for future sessions : Désactiver l'écran d'accueil.

Notez que les options ne s'appliquent qu'au processus Emacs courant. Pour les sauvegarder pour la prochaine fois, faites Save options dans le même menu.

Le fichier .emacs

Nous allons maintenant aller un peu plus loin dans la configuration d'Emacs. Ouvrez le fichier .emacs.el (il peut s'appeler au choix .emacs ou .emacs.el, c'est comme on veut), à la racine de votre compte (menu File, Open File, ou bien C-x C-f ~/.emacs.el RET, c'est à dire Control-x, puis Control-f, le nom du fichier .emacs.el, puis Entrée).

Le début du fichier est votre configuration, telle qu'elle vous est proposée par l'équipe pédagogique. Nous avons changé le moins de choses possibles pour que vous ne soyez pas dépaysés si vous avez à utiliser Emacs sur d'autres machines, mais n'hésitez pas à jouer avec votre configuration.

À la fin du fichier, vous devriez trouver ce que « Save Options » a fait si vous avez suivi les instructions quelques lignes plus haut.

Raccourcis utiles

La refcard Emacs contient un tas de raccourcis utiles. Elle est disponible ici (C-x veut dire « Ctrl-x », M-y veut dire « Alt-y », C-x h C-M-\ veut dire « Ctrl-x, puis relâcher, puis h, puis relâcher, puis Ctrl-Alt-backslash (donc, sur un clavier azerty, Ctrl-Alt-AltGr-8) » par exemple) emacs23-refcard.pdf.

Avec de l'expérience, vous n'aurez plus besoin de votre souris, le clavier va beaucoup plus vite pour la plupart des tâches : en utilisation courante, on a les deux mains sur le clavier, les raccourcis clavier sont à une fraction de seconde de vos doigts …

Par ailleurs savoir utiliser son éditeur de texte entièrement au clavier est particulièrement utile, quand on se connecte avec ssh : En mode graphique (ssh -X), l'interface est souvent trop lente pour être utilisable, et quand on ne dispose pas de l'option graphique (-X ou -Y), comme avec Putty, on ne dispose plus que des commandes du clavier.

Aller plus loin

Nous n'avons vu que le strict minimum pour commencer avec Emacs, mais apprendre vraiment à se servir de cet éditeur prend des années. Il est vivement conseillé de lire une documentation plus complète, comme l'une proposée dans la page d'accueil.