2010-08-23 29 views
4

J'ai utilisé emacs/slime pour coder lisp, mais avec Clojure j'ai trouvé 'lein swank'. Je dois dire que c'est très utile, car je peux me connecter à un serveur qui exécute clojure.Equivalent de 'lein swank' à d'autres implémentations de Lisp/Scheme avec emacs/slime

Que diriez-vous des autres implémentations de Lisp? Quelles implémentations de Lisp fournissent l'équivalent de "lein swank" dans Clojure? Je veux dire, y a-t-il d'autres implémentations Lisp qui fournissent une connectivité serveur pour que j'utilise 'M-x slime-connect', pas seulement 'M-x slime'?

Répondre

4

Les backends swank non-clojure n'ont pas besoin d'un équivalent lein swank puisqu'ils peuvent simplement lancer une instance lisp et modifier son chemin de chargement au moment de l'exécution pour le faire fonctionner pour un projet donné. Cette approche ne fonctionne pas avec Clojure puisque le classpath de la JVM ne peut pas être modifié au moment de l'exécution.

+0

Remarque, vous pouvez modifier le classpath lors de l'exécution en utilisant https://github.com/cemerick/pomegranate grenade ou dj https://github.com/bmillare/dj. Avec dj vous pouvez même changer les sys_paths à l'exécution avec un petit hack pour jvms hotspot. La seule chose que vous ne pouvez pas changer lors de l'exécution est le ld_library_path. – bmillare

1

Vous pouvez charger Swank manuellement dans CL et démarrer le serveur (slime/swank ont ​​été créés pour CL).

2

Je ne sais pas à propos de clisp, mais c'est ce que j'ai pour SBCL. Cela co-existe avec mon installation clojure swank ainsi. Je n'utilise pas ELPA et à la place j'ai une configuration complètement manuelle.

(add-to-list 'load-path "~/src/slime") 
(require 'slime) 
(add-to-list 'slime-lisp-implementations '(sbcl ("/usr/local/bin/sbcl"))) 
(setq slime-default-lisp 'sbcl) 

J'ai un SBCL compilé manuellement. Je vois un backend pour CLISP dans la base de code SLIME CVS, donc je suppose, changer les implémentations de slime-default-lisp et de slime-lisp-clisp fonctionnera probablement. Lein Swank existe principalement pour le démarrage du port Swank sur un projet particulier. Cela est nécessaire car les chemins de classe JVM ne peuvent pas être modifiés lors de l'exécution. Donc, nous commençons java avec classpaths mis à nos répertoires de projet et dépendances en utilisant lein swank ou swank-clojure-project. Avec CL, ce n'est pas nécessaire, car les noms de chemins peuvent être modifiés pendant l'exécution.

J'ai posté le fichier de configuration complet à: http://github.com/vu3rdd/dotfiles

Je serai heureux d'aider la mise en place d'un emacs/boue/configuration Swank entièrement manuel.

+0

@rkrishnan: J'ai compris, en fait, ce que je voulais savoir, c'est comment courir à distance quelque chose comme "lein swank". Mais, je suppose que c'est juste OK pour courir localement, pas à distance. Merci pour l'aide. – prosseek

0

incendie jusqu'à la mise en œuvre Lisp, charge Swank (via Quicklisp, par exemple), et exécuter swank:create-server:

CL-USER(1): (ql:quickload "swank") 
;; ... 
CL-USER(2): (swank:create-server) 
;; Swank started at port: 4005. 
4005 

Si vous souhaitez spécifier un autre port, vous pouvez le faire en utilisant l'argument de mot-clé :port :

CL-USER(3): (swank:create-server :port 4123) 
;; Swank started at port: 4123. 
4123 

Notez que depuis le protocole tend à changer entre les versions, vous devez vous assurer que vous n'utilisez des versions très différentes de Slime Swank. Pour Common Lisp, je tends à utiliser les versions de Quicklisp en mettant quelque chose comme ce qui suit dans mon .emacs, selon la version de BOUE actuellement disponible en Quicklisp:

(add-to-list 'load-path "~/quicklisp/dists/quicklisp/software/slime-20111105-cvs") 
(add-to-list 'load-path "~/quicklisp/dists/quicklisp/software/slime-20111105-cvs/contrib")