Clojure Repl Emacs и слизь

494
CodeKingPlusPlus

Я настроил слизь для emacs, и я могу запустить много разных реализаций общего lisp. А как насчет запуска языка как clojure?

Я проверил это, изменив мой .emacsфайл:

(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)) 

Кажется, работает, однако есть исключение:

(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")) 

Также я получаю странное сообщение в мини-буфере:

polling "/tmp/slime2.4708" .. ddd (Abort with M-x 'slime-abort-connection'.)где dddтаймер увеличивается в секундах.

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

Я решил запустить интерпретатор commonlisp и сравнить. Вот что я получаю от sbclинтерпретатора до того, как получаю подсказку:

(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 

Затем появляется общий интерпретатор lisp.

  1. Как мне настроить реплик clojure со слизью или как я могу исправить мою маленькую проблему?
1

2 ответа на вопрос

1
jbm

Был проект swank -clojure для использования SLIME с Clojure, но сейчас он устарел в пользу nrepl.el . Моя рекомендация будет проверить nrepl.el.

nrepl является де-факто repl для Clojure, и с nrepl.el он имеет функциональность, аналогичную SLIME - вы запускаете REPL в Emacs, отправляете ему код из буфера (ов), можете быстро переходить к определениям, получать динамическое завершение кода, и т. д. Единственное место, в котором мне не хватает по сравнению с SLIME, - это отладка, но swank-clojure все равно не поддерживал отладчик SLIME.

1
Inaimathi

Насколько я знаю, clojure-swankбольше не поддерживается; предпочтительный способ взаимодействия с Clojure из Emacs - через nrepl .

Вы можете проверить наши инструкции по установке для этого подхода здесь ; они выглядят очень просто (хотя по общему признанию, я не пробовал их, так как я некоторое время не использовал Clojure).

Похожие вопросы