Clojure Repl Emacs und Schleim

579
CodeKingPlusPlus

Ich habe Schleim für Emacs konfiguriert und kann viele verschiedene Implementierungen von Common LISP ausführen. Was ist mit einer Sprache wie clojure?

Ich habe das getestet, indem ich meine .emacsDatei geändert habe :

(add-to-list 'load-path "~/slime/") ; your SLIME directory  (setq slime-lisp-implementations `((sbcl ("/usr/bin/sbcl")) (clojure ("/usr/bin/clojure")) (ecl ("/usr/bin/ecl")) (clisp ("/usr/bin/clisp" "-q -I")))) ;(setq inferior-lisp-program "/usr/bin/sbcl") ; your Lisp system  (require 'slime) (slime-setup '(slime-fancy)) 

Es scheint zu funktionieren, aber es gibt eine Ausnahme:

(progn (load "/home/d2b2/slime/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.19396")) 

Ich bekomme auch eine seltsame Nachricht im Mini-Puffer:

polling "/tmp/slime2.4708" .. ddd (Abort with M-x 'slime-abort-connection'.)Wo dddist ein Timer in Sekunden.

Clojure 1.1.0 user=> java.lang.Exception: Unable to resolve symbol: progn in this context (NO_SOURCE_FILE:1) user=> user=>  

Ich entschied mich für einen Commonlisp-Interpreter und einen Vergleich. Das bekomme ich vom sbclInterpeter, bevor ich eine Aufforderung bekomme:

(progn (load "/home/d2b2/slime/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.19396"))  This is SBCL 1.0.55.0.debian, an implementation of ANSI Common Lisp. More information about SBCL is available at <http://www.sbcl.org/>.  SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. * ; loading #P"/home/d2b2/slime/swank-loader.lisp" STYLE-WARNING: redefining EMACS-INSPECT (#<BUILT-IN-CLASS T>) in DEFMETHOD STYLE-WARNING: Implicitly creating new generic function STREAM-READ-CHAR-WILL-HANG-P. WARNING: These Swank interfaces are unimplemented: (DISASSEMBLE-FRAME SLDB-BREAK-AT-START SLDB-BREAK-ON-RETURN) ;; Swank started at port: 57199. 57199 * STYLE-WARNING: redefining THREAD-FOR-EVALUATION (#<STRUCTURE-CLASS MULTITHREADED-CONNECTION> #<SB-MOP:EQL-SPECIALIZER >) in DEFMETHOD 

Dann erscheint der allgemeine Lisp-Interpreter.

  1. Wie richte ich ein clojure repl mit Schleim ein oder wie kann ich mein kleines Problem beheben?
1

2 Antworten auf die Frage

1
jbm

Es gab ein Swank-Clojure- Projekt für die Verwendung von SLIME mit Clojure, das jedoch jetzt zugunsten von nrepl.el nicht mehr empfohlen wird . Meine Empfehlung wäre, nrepl.el auszuprobieren.

nrepl ist die De-facto- Replik für Clojure. Mit nrepl.el hat es eine ähnliche Funktionalität wie SLIME: Sie führen eine REPL in Emacs aus, senden den Code aus Ihren Puffern, können schnell zu Definitionen springen, den dynamischen Code vervollständigen, usw. Der einzige Ort, an dem ich im Vergleich zu SLIME etwas vermisst habe, ist das Debuggen, aber Swank-Clojure unterstützte den SLIME-Debugger sowieso nicht.

1
Inaimathi

Soweit ich weiß, clojure-swankwird nicht mehr gepflegt; Die bevorzugte Möglichkeit, mit Clojure von Emacs zu interagieren, führt über nrepl .

Sie können unsere Installationsanweisungen für diesen Ansatz hier überprüfen ; Sie sehen extrem einfach aus (obwohl ich sie freilich nicht ausprobiert habe, seit ich Clojure seit einiger Zeit nicht benutzt habe).