2010-12-29 6 views
6

Posso eseguire emacs e avviare slime (con M-x slime). A questo punto ottengo il REPL nel buffer inferiore-lisp e posso eseguire lisp lì. Ma quando apro codice Lisp in un altro buffer nessuna delle opere melma-bontà (C-x C-e, C-c C-k ecc) e continuo a vedere questo nei messaggi tampone (con un crescente numero di numero):Cosa c'è di sbagliato nella mia configurazione di emacs/slime (compile-and-load/eval non funziona)?

melma-connection: non connesso.

Polling "/var/folders/B9/B9B5J15dH+aNt5J5gkROEk+++TI/-Tmp-/slime.3202" .. (Interruzione con `Mx melma-abort-connection'.) [69 volte]

Mi fa pensare che la melma non si connetta all'interprete Lisp corretta, ma poiché sono molto nuovo a emacs e lisp, sono bloccato qui. La mia configurazione è:

+0

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

risposta

6

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

+0

Quindi questa installazione ha funzionato per Clojure con melma, ma non per l'integrazione della melma clisp. In qualche modo quando dico M-x slime-common-lisp, usa ancora la melma di elpa. Come lo aggiusto? – arnab

+0

Prova a riavviare Emacs prima di usare 'M-x slime-common-lisp'. Un mago Emacs sarebbe probabilmente in grado di dire come scaricare l'ELPA SLIME prima di caricare quello di CVS ma non so come farlo. – spacemanaki

+0

Sì, ho riavviato emacs prima di provare 'M-x slime-common-lisp'.Comunque l'ESK sta caricando l'elpa/melma * prima del mio slime-cvs e quindi il problema. Proverò a chiedere anche su problemi di esk. Grazie. – arnab

0

Se u hanno correttamente installare melma nel vostro sistema, quindi, un uso migliore SBCL e aggiungere la seguente riga nel vostro ~/.emacs (setq inferior-lisp-program "/usr/bin/sbcl")

/usr/bin/sbcl può essere diverso in base al percorso di installazione sbcl.