mardi 29 juillet 2014

1-Utilisation d'EMACS.

>>>>
Utilisation d'EMACS.

Si ce n'est déjà fait, installez GNU EMACS, et SLIME-SBCL sur votre ordinateur: quelques simples recherches sur internet vous permettent de trouver la bonne implémentation adaptée à votre environnement (Windows, Linux, Mac, ...).
Installation de SLIME sous Linux: voir un exemple plus bas.

Travailler sous EMACS peut être très rapide, à condition de se familiariser avec les raccourcis-claviers.
Je vous propose quelques raccourcis ci-dessous.
Ce rappel n'est pas exhaustif, mais il permet de se débrouiller rapidement avec Emacs.
Pour en savoir plus: faire C-h b pour obtenir tous les raccourcis-clavier (dans le système de codage défini!).
Vous pouvez, aussi, lire le tutoriel sur Emacs dans votre langue: Dans le menu d'Emacs, cliquez sur Help, puis sur Emacs Tutorial (choose language). Dans la fenêtre qui s'ouvre cliquez sur French.
Dans la suite, C représente la touche Ctrl et M la touche Alt (s'il n'y a pas de touche Méta).
Bon courage aux débutant!
Et n'oubliez pas de mettre à jour vos fichiers si vous utilisez des copies de mes pages (elles peuvent évoluer!)
Mieux! Concaténez tous les articles dans Emacs en les séparant par: ">>>>". Pour passer rapidement d'un article à l'autre, lancez une recherche de la chaîne ">>>>" (toujours dans Emacs).

C-v   avancer d'une page
M-v           reculer d'une page
C-f            avancer d'une lettre
C-b           reculer d'une lettre
M-f           avancer d'un mot
M-b          reculer d'un mot
C-a           aller en début de ligne
C-e           aller en fin de ligne
M-a          aller en début de paragraphe
M-e          aller en fin de paragraphe
Alt+< ou Ctrl+(Fn)+Début       d'aller au début du tampon
Ctrl+(Fn)+Fin d'aller à la fin du tampon ((Fn) est la touche de fonction sur certains ordinateurs)
C-M-f  avancer d'un mot ou d'une parenthèse (tout le contenu de la parenthèse est sauté)
C-M-b  reculer d'un mot ou d'une parenthèse (tout le contenu de la parenthèse est sauté)
C-M-n avancer d'une liste
C-M-p reculer d'une liste
C-M-d descendre d'un niveau de liste
C-M-u monter d'un niveau de liste
C-M-a reculer à la parenthèse se trouvant en première colonne (par exemple dans le mode fundamental)
C-M-e avancer après la parenthèse fermant celle obtenue avec C-M-a
C-M-k supprime l'expression après le point
C g          annule un début de commande
C-x 0  ferme la fenêtre courante (0 est un chiffre)
C-x 1       réduit Emacs à une seule fenêtre
C-x 2       ouvre une deuxième fenêtre dans Emacs avec une séparation horizontale
C-x 3       ouvre une deuxième fenêtre dans Emacs avec une séparation verticale
C-x o       met le curseur dans l'autre fenêtre (o est une lettre)
C-d         efface le caractère sous le curseur
M-d         efface le mot qui suit le curseur
C-esp marque le début d'une sélection (faire C-f ou M-f ou C-e ou M-e, pour agrandir la   sélection)
C-w        efface la sélection (voir aussi C-y pour coller)
M-w   copie la sélection (voir aussi C-y pour coller)
C-x C-l   met en minuscules la région sélectionnée (confirmer cette volonté avec la touche espace)
C-x C-u  met en majuscules la région sélectionnée (confirmer cette volonté avec la touche espace)
C-k        supprime le texte du curseur à la fin de la ligne
C-x u      défait l'effet de la dernière commande (la commande a la valeur d'un "Undo" tant qu'il y a    une action dans la pile, sinon la commande fait un "redo")
C-y       fait réapparaître le texte où l'on veut, autant de fois que l'on veut, et le garde en mémoire
C-s         recherche d'un mot vers le bas: taper le mot dans le mini-tampon
C-r         recherche d'un mot vers le haut: taper le mot dans le mini-tampon
M-%      remplace un mot par un autre: taper mot1 ret mot2 ret, et répondre y ou n pour chaque   occurrence ou : pour tout.
M-/         propose la complétion d'un mot en cours de frappe. On peut retaper M-/ pour avoir d'autres suggestions.
C-x C-f ouvre un fichier (ancien ou nouveau): entrer le chemin et le nom du fichier dans le
mini-tampon
C-x s        sauvegarder les fichiers (répondre au choix proposé: y, n, ...)
C-x C-s  sauvegarder le fichier en cours (et seulement lui)
C-x Cw  sauvegarder le tampon (buffer) dans un autre fichier: entrer le chemin et le nom du fichier  dans le mini-tampon
C-x C-b changer de tampon (buffer) (choisir dans la liste proposée)
C-x b retourner au tampon (buffer) par défaut ou ouvrir un nouveau tampon
C-x C-e   exécute l'expression lisp si le curseur se trouve à droite de l'expression lisp et affiche le  résultat dans le mini-buffer
C-x C-h   permet d'obtenir la liste de tous les raccourcis.
M-x         permet d'exécuter des commandes (nombreuses!): taper la touche TAB (2 fois) et
choisir la commande (voir l'aide: C-h c)
C-x C-c quitte Emacs en sauvant les tampons (ou buffers)
C-x k       demande la sauvegarde du tampon, puis supprime le tampon
C-x C-q met ou enlève l'option de lecture seule sur le tampon courant
C-z         icônifie Emacs (pour désicônifier: cliquer sur l'icône Emacs)
C-x 26#26 + séquence de touches + C-x 27#27   fait une macro correspondant à la séquence de          touches
C-/         défaire l'action d'une commande qui a modifié le tampon (buffer) d'une façon non désirée
C-M q       permet d'indenté la S-expression sélectionnée (LISP)

L'AIDE:

C-h ?                          aide sur l'aide (ou M-x help)
C-h lettre                    pour avoir de l'aide sur le type d'aide représentée par la "lettre"
C-h r                          ouvre le manuel d'Emacs
C-h c commande       pour avoir de l'aide sur une "commande" (affichée dans le mini buffer en bas). Exemple: C-h c C-p     >>     C-p runs the command previous-line
C-h k commande      pour avoir une documentation plus fourni sur une "commande"
C-x 4 C-o                 pour revenir au buffer précédent
C-M-v                    pour faire défiler l'aide
C-h f nom_de_fonction         pour afficher les informations sur la fonction
C-h a mot-clé           pour afficher toutes les commandes qui contiennent le "mot-clé"
C-h i                      ouvre le tampon *info* pour lire les manuels en ligne
C-h b                      liste les fonctions associées aux touches
C-h m                    décrit le mode courant

Installer slime-sbcl dans Emacs.
(sous LINUX)

Dans le shell de Linux :
Tapez, successivement, ce qui suit en acceptant les téléchargements proposés :

sudo apt-get install sbcl
curl -O http://beta.quicklisp.org/quicklisp.lisp
sbcl --load quicklisp.lisp



Vous êtes alors sous SBCL. L’invite * montre que SBCL attend une
commande.




Dans SBCL :
Tapez, successivement, ce qui suit :
      (quicklisp-quickstart:install)
      (ql:quickload "quicklisp-slime-helper")
Pour fermer SBCL, tapez :
      (exit)
Ouvrez Emacs (On suppose qu’il est installé!).
Dans Emacs demandez l’ouverture d’un fichier et tapez :
      .emacs
Le fichier de configuration de Emacs s’ouvre.
Ajoutez à la fin du fichier de configuration :

     (load (expand-file-name "~/quicklisp/slime-helper.el"))
     ;; Précisez le chemin de "sbcl" pour votre implémentation
     (setq inferior-lisp-program "/usr/bin/sbcl")




Enregistrez le fichier (save) et fermez-le (close).
Ouvrez Emacs à nouveau (donc avec sa nouvelle configuration).





Tapez dans le mini-tampon (mini-buffer) :

Alt-X slime (ou M-x slime, si touche méta)

 Vous pouvez, maintenant, travailler avec Common Lisp REPL !

SLIME-REPL:

C-Enter                    ferme les parenthèses et compile l'expression
C-c C-c                    interruption du processus lisp
,                               demande de commande:
quit-Enter                 quitte Slime et ses tampons
(load "~/chemin/nom-de-fichier.extension")                                  charge et compile le fichier.
(load (compile-file "~/chemin/nom-de-fichier.extension"))           compile d'abord le fichier, puis                                         charge le résultat de la compilation.
C-M-a va à la précédente parenthèse se trouvant en première colonne
C-M-e va à la prochaine parenthèse se trouvant en première colonne

SLIME inspector:

C-c I        lance SLIME inspector. Entrer l'expression à inspecter (ex: (fac 5)), et valider. se déplacer                  sur l'objet à détailler et valider. l pour revenir en arrière. q pour quitter l'inspecteur.

Exemples de déboggage:
(trace fac) puis taper (fac 5)          (fac doit être une fonction définie)
(untrace fac)                                 pour arrêter de tracer la fonction fac
(untrace)                                      pour arrêter de tracer toute fonction

La prochaine fois nous parlerons des fonctions Common Lisp.