Quello che segue è quello che ho fatto per ottenere Common Lisp e Clojure per lavorare nella stessa installazione di Emacs, insieme all'eccellente emacs-starter-kit. Questo non ti permetterà di usare entrambi contemporaneamente (devi riavviare Emacs per passare da CL a Clojure o viceversa)
Credo che la versione di SLIME in ELPA sia vecchia, ma lavori per Clojure. La versione più recente di SLIME non funzionerà con Clojure. Inoltre, questa versione di SLIME sembra essere ridotta (senza swank-loader.el?) E non funzionerà con Common Lisp.
Questi sono i passaggi che ho fatto per farlo funzionare, è proprio quello che ha funzionato per me. Tutti i bit sono in fase di sviluppo attivo, quindi penso che la rottura in quest'area sia piuttosto probabile.
Con un fresco Emacs (nessuna configurazione a tutti, in modo da spostare nulla .emacs
da qualche altra parte per il momento) installare ELPA:
http://tromey.com/elpa/install.html
Dall'interno di Emacs, installare i pacchetti "melma" e "slime- repl". (M-x package-list-packages
poi C-s slime
poi i
per selezionare e x
da installare)
spostare i file in ~/.emacs.d/elpa/slime-20100404
e ~/.emacs.d/elpa/slime-repl-20100404
in una nuova directory come ~/hacking/lisp/elpa-slime
.
Installa l'installazione ELPA: $ rm -rf .emacs.d
.
Ora clonare il kit di avvio emacs e spostarlo su .emacs.d
. L'ho fatto solo con una nuova copia di Github di technomancy, quindi prova prima se hai problemi.
Ricevi le ultime SLIME con CVS:
cvs -d :pserver:anonymous:[email protected]:/project/slime/cvsroot co cvs-slime
non credo OS X viene fornito con CVS installato, quindi sarà necessario installarlo da MacPorts, Homebrew o qualcosa del genere.
Ho inserito cvs-slime
in ~/hacking/lisp
.
Speriamo è ovvio ciò che l'Emacs Lisp qui sotto fa:
(defun slime-common-lisp()
(interactive)
(setq inferior-lisp-program "/usr/local/bin/sbcl") ; your Common Lisp impl
(add-to-list 'load-path "~/hacking/lisp/cvs-slime/") ; your SLIME from CVS directory
(require 'slime)
(slime-setup '(slime-repl))
(slime))
(defun slime-clojure()
(interactive)
(add-to-list 'load-path "~/hacking/lisp/elpa-slime")
(require 'slime)
(slime-setup '(slime-repl))
(slime-connect "localhost" 4005))
Per Clojure che avrebbe dovuto iniziare il runtime Clojure e swank-clojure
sulla porta 4005, penso che utilizzando Leiningen è il metodo approvato:
Creare un nuovo progetto:
$ lein new project
$ cd project
In project.clj
:
(defproject newclj "1.0.0-SNAPSHOT"
:description "FIXME: write"
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.2.1"]])
Poi:
$ lein deps
$ lein swank
A cura di aggiungere:
Se si scopre che Paredit nella melma REPL è rotto durante l'utilizzo di questa configurazione, check this out: http://www.emacswiki.org/emacs/ParEdit#toc3
Almeno un altro potenziale problema con questo è che, AFAICT, se apri un file sorgente Common Lisp e poi avvii SLIME, non sarai in grado di inviare moduli dal primo buffer al buffer SLIME. Quindi aprire un buffer SLIME prima di aprire qualsiasi file sorgente Common Lisp e dovrebbe funzionare. Questo non sembra applicarsi a Clojure.
Riferimenti:
emacs setup for both clojure and common lisp with slime-fancy (slime-autodoc)
https://github.com/technomancy/swank-clojure/issues/closed#issue/31/comment/544166
BTW - Ho provato a rimuovere le mie personalizzazioni e non funzionava ancora. Tutto quello che mi rimaneva era: (setq-lisp-programma-inferiore "/ usr/local/bin/clisp") (aggiungi-a-lista 'percorso-caricamento' ~/code/playground/lisp/slime/") (richiede 'slime) (setup slime) – arnab