Magmatique

Magmatique

Emacs

Voici un petit cour pour apprendre à programmer en C avec emacs.
Pour commencer, il nous faut installer emacs.

sudo apt-get install emacs

On peut utiliser emacs de deux manières :

- en mode graphique (clique sur l'icône emacs)

- en mode textuel (en shell, faire : emacs -nw)

Pour avoir une interface emacs personnalisée, il faut, pour cela, configurer (ou le créer s'il n'existe pas) le fichier .emacs dans votre home. Voir sur le net pour les différentes configurations possibles.

Voici les différents raccourcis disponibles sur emacs :

Gestion des fichiers :

C+x C+f / Commande permettant le chargement d'un fichier. Vous devez indiquer le nom du fichier en utilisant le mini-buffer dans lequel apparaî la commande. Si le fichier n'existe pas il est créé.

C-x C-s / Commande permettant la sauvegarde du tampon actif. Si le contenu de l'éditeur n'a pas de nom un message apparaît dans le mini buffer Save file in ~/, qui vous invite à donner le nom de votre fichier.

C-x C-w / Cette commande permet d'enregistrer votre fichier sous son nom, ou à lui en donner un s'il n'en avait pas. Elle correspond au menu Enregistrer sous (Save as) de la plupart des éditeurs.

C-x i / Commande permettant d'insérer un fichier sous un nouveau nom, à l'emplacement courant du curseur dans l'éditeur.

C-x C-c / Commande qui permet de quitter l'éditeur.

Commandes d'édition :

M-f / Commande pour déplacer le curseur d'un mot vers l'avant.

M-b / Même chose que précédemment mais déplacemment d'un mot en arrière du curseur.

C-a / Commande pour déplacer le curseur au début de la ligne courante.

C-e / Commande pour déplacer le curseur à la fin de la ligne courante.

C-d / Supprime le caracère sous le curseur.

M-d / Supprime le mot suivant.

M-DEL / Supprime le mot précédent.

C-k / Supprime la fin de la ligne à partir de la position du curseur.

C-ESPACE / Marque la fin ou le début d'une région.  Les commandes suivantes suppriment ou copient cette région.

C-w / Supprime la région précédemment marquée.

M-w / Copie la région précédemment marquée. Le texte copié pourra être recopié ailleurs.

 C-y / Recopie la dernière suppression ou copie à la position du curseur.

M-y / Commande qui permet de récupérer des suppressions antérieures.

Commandes de recherche et de remplacement :

M-x / Commande qui ouvre une séquence permettant de taper une commande dans le Mini tampon. Exemple :
M-x Compile permet de compiler votre programme.
M-x term permet d'ouvrir un shell directement dans l'éditeur.
Gestion des buffers sur emacs :

Sur Emacs, on peut, soit avoir une seul fenêtre ouverte pour travailler, ou, d'autres ouvertes, pour divers besoins. Il s'agit de fichiers ouverts qui seront affichés ou bien simplement mis en arrière plan.Ces fichiers sont associés à des zones mémoire différentes (tampons ou buffers en anglais). Ces tampons peuvent être affichés en multi-fenêtrage.Le buffer de commandes qui se trouve en bas de l'éditeur, permet de lancer des commandes spécifiques à Emacs.

Voici les commandes qui leur sont associées :

C-x C-b / Commande qui ouvre une deuxième fenêtre qui affiche le tampon *Buffer List*. Cette fenêtre affiche la liste de tous les tampons d'édition existant.

C-x b / Commande pour ouvrir un nouveau buffer dans la fenêtre ou le curseur se trouve. Taper le nom choisis pour celui-ci.

C-x o / Commande qui vous place dans la fenêtre suivante en cas d'affichage multiple.

C-x 0 / Cette commande supprime la fenêtre courante ou le curseur se trouve.

C-x 1 / Commande qui supprime toutes les fenêtres en dehors de celle ou le curseur se trouve.

Voilà en ce qui concerne les commandes de bases d'emacs. On va donc créer notre premier programme C.

On crée notre fichier.c sur Emacs : C-x C-f -> ~/Répertoire/prog-emacs.c , ce qui aura pour conséquence d'ouvrir le mode C spécifique à la programmation de code source C sur Emacs (a coloration syntaxique, l'indentation, etc...).

/* ------------ */
/* prog-emacs.c */
/* ------------ */
#include

main()
{
   printf("Mon premier programme en C sur Emacs\n") ;
}

On enregistre celui-ci par la commande C-x C-w .

La compilation de notre premier programme :

Pour fonctionner make a besoin d'un certains nombre d'informations qu'il cherchera par défaut dans un fichier nommé makefile ou Makefile dans le répertoire courant. On va donc, crée notre Makefile car Emacs lance par défaut la compilation via l'outil Make. De plus, cela nous permettra d'avoir un mode de compilation fiable et de ne pas ressaisir à chaque fois des lignes parfois fastidieuses. L'inconvénient est que le makefile doit se trouver dans le répertoire du buffer courant.
Notre Makefile :

CC=gcc
CFLAGS= -Wall -pedantic -ansi -lncurses

PRG=monprog

$(PRG): $(PRG).c

clean:
    -rm -f *~
cleanall:
    -rm -f $(PRG)

Explication :

CC et CFLAGS sont des variables standards de Makefile.
Dans CC nous mettons le nom du compilateur (il n'est pas nécessaire de mettre la ligne CC=gcc, make trouvera lui même le compilateur).
CFLAGS prend les options de compilation tel que -Wall (avertissements), -pedantic  (conforme strictement à la norme de C) et -ansi pour vérifier la conformité avec la norme ANSI, -ncurses si on désire inclure cette bibliothèques.
La variable PRG n'est pas une variable standard, mais une variable que l'on rajoute. On l'initialisera avec le nom de notre programme.
Make remplace $(PRG) par la valeur de la variable. Exemple :

$(PRG): $(PRG).c

devient

monprog: monprog.c

Cette ligne indique à make qu'il faut produire l'exécutable toto à partir de la source toto.c. Pour cela make lancera le compilateur C avec les options données par CFLAGS.
Les lignes suivantes ne sont pas nécessaires mais servent à nettoyer le répertoire.
Exemple :

make clean

alors make lancera la commande

rm -f *~  qui supprimera les fichiers de sauvegarde laissés par emacs.
make cleanall supprimera en plus l'exécutable monprog du répertoire.
Recopier ce Makefile dans le répertoire avec votre programme C et remplacer monprog par le nom de votre programme.
Important: les lignes indentées dans Makefile commencent par le caractère TAB et non par des espaces. make ne comprend pas les lignes avec des espaces au début. Pour utiliser la compilation sous emacs if faut que votre programme soit accompagné d'un Makefile.
Une fois cela fait, on peut compiler notre programme avec la commande M-x compile .



29/07/2008
0 Poster un commentaire

Inscrivez-vous au blog

Soyez prévenu par email des prochaines mises à jour

Rejoignez les 2 autres membres