clojure repl emacs e lodo

1

Eu tenho o slime configurado para o emacs e posso executar muitas implementações diferentes do lisp comum. Que tal executar uma linguagem como clojure?

Eu testei isso modificando meu arquivo .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))

Parece funcionar, mas há uma exceção:

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

Também recebo uma mensagem estranha no mini-buffer:

polling "/tmp/slime2.4708" .. ddd (Abort with M-x 'slime-abort-connection'.) em que ddd é um temporizador que aumenta em segundos.

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

Eu decidi executar um interpretador commonlisp e comparar. Isso é o que recebo do interpedador sbcl antes de receber uma solicitação:

(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
                                       {1004A8CC43}>) in DEFMETHOD

Em seguida, o intérprete common lisp aparece.

  1. Como configuro uma replicação de clojure com slime ou como posso corrigir meu pequeno problema?
por CodeKingPlusPlus 14.08.2013 / 23:47

2 respostas

1

Havia um projeto swank-clojure para usar o SLIME com o Clojure, mas agora ele está obsoleto em favor de nrepl.el . Minha recomendação seria dar uma olhada no nrepl.el.

nrepl é a replicação de de facto para o Clojure, e com o nrepl.el tem funcionalidade semelhante ao SLIME - você executa um REPL no Emacs, envia código para ele do seu buffer (s), pode pule rapidamente para as definições, obtenha a conclusão de código dinâmico, etc. O único lugar em que eu achei que faltava um pouco comparado ao SLIME é a depuração, mas o swank-clojure não suportava o depurador do SLIME de qualquer maneira.

    
por 15.08.2013 / 00:10
1

Até onde eu sei, clojure-swank não é mais mantido; A maneira preferida de interagir com o Clojure do Emacs é através do nrepl .

Você pode conferir nossas instruções de instalação para essa abordagem aqui ; eles parecem extremamente simples (apesar de admitir que eu não os experimentei desde que eu não usei o Clojure há algum tempo).

    
por 15.08.2013 / 16:44