SLIME
environnement Lisp pour Emacs
From Wikipedia, the free encyclopedia
SLIME (en anglais Superior Lisp Interaction Mode for Emacs) est un mode Emacs pour développer des applications en Common Lisp avec GNU Emacs ou certaines variantes.

SLIME est développé depuis 2003[1] sous la forme d'un projet de logiciel libre et a attiré depuis les contributions d'une centaine de programmeurs.
SLIME fonctionne avec une architecture client-serveur, de manière similaire au LSP (Language Server Protocol), que SLIME précède de plusieurs années. SLIME est une extension écrite en Emacs Lisp qui communique avec le module Swank, qui est lui chargé dans l'image Common Lisp. Des appels de commande ou des raccourcis claviers effectués dans l'éditeur induisent des changements incrémentaux dans le programme Lisp en cours d'utilisation[2].
D'autres langages que Common Lisp (tels que R, Scheme, Clojure[3] ou encore JavaScript) disposent d'une prise en charge par SLIME, dans les limites des capacités du langage hôte[4].
Fonctionnalités
SLIME offre des fonctionnalités typiques des environnements de développement intégrés, telles que :
- complétion du code
- compilation du code à la volée (compilation de la fonction en cours, du fichier entier, d'un projet), de manière incrémentale dans l'image Lisp.
- surlignage des lignes du code source lors d'erreurs ou de warnings à la compilation.
- évaluation d'expressions
- affichage de la documentation et de la signature des fonctions.
- aller à la définition d'un symbole.
- un inspecteur d'objets interactif.
- la manipulation d'autre chose que du texte, telles que les "présentations" et, dans une moindre mesure, d'images.
- un débogueur interactif, qui permet d'inspecter la pile d'appels de fonctions, qui permet au programmeur d'aller à la ligne correspondant à une erreur, de corriger la fonction en question, de la re-compiler, de revenir dans le débogueur et de faire repartir l'exécution du programme depuis le point d'exécution qui avait échoué, sans devoir lancer de nouveau tout le programme depuis le début.
- l'utilisation de "restarts", des choix programmables dans le débogueur interactif.
- l'utilisation de points d'arrêts (breakpoints) et d'un "stepper", pour une exécution pas à pas des expressions du code source.
- l'expansion de macros
- la recherche de références croisées : lister toutes les lignes du système qui appellent telle fonction, qui assignent une valeur à tel symbole, qui dépendent de tel symbole, etc.
- l'export automatique de symboles.
- des outils visuels pour tracer des fonctions,
- ou pour désassembler des fonctions.
- des commandes de raccourcis (telles que : charger un projet, installer une bibliothèque logicielle, sans redémarrer l'image Lisp, changer le répertoire de travail courant du REPL, etc)
- etc
Connexion à distance
L'architecture choisie permet de se connecter à un programme distant qui aura démarré un serveur Swank[5], depuis le confort de son éditeur sur sa machine locale.
Cela permet d'inspecter le programme, de changer des paramètres, voire de charger et de compiler du nouveau code, et ainsi de mettre à jour son système, sans l'arrêter.