2011-05-13 9 views
9

Ho avuto problemi con l'impostazione di SLIME per lavorare con Clojure e Common Lisp. La maggior parte degli sviluppatori Clojure tende a utilizzare lo SLIME ridotto a zero disponibile tramite ELPA che è congelato per la compatibilità Clojure. Io, comunque, faccio un sacco di hacking Common Lisp e generalmente uso la versione di CVS SLIME (ottenuta tramite QuickLisp).Configurazione SLIME per lo sviluppo Common Lisp e Clojure

Ci sono alcuni ben noti problemi con l'implementazione Swank per Clojure - non funziona con autodoc (se è abilitata blocca SLIME), non supporta alcune cose come fuzzy completamento, ecc Questo question discute la lo stesso soggetto la risposta ha suggerito non c'è un go per me.

(add-hook 'slime-connected-hook 
      (lambda() 
      (if (string= (slime-lisp-implementation-type) "Clojure") 
       (setq slime-use-autodoc-mode nil) 
       (setq slime-use-autodoc-mode t)) 
      )) 

(add-hook 'slime-mode-hook 
      (lambda() 
      (if (eq major-mode 'clojure-mode) 
        (slime-autodoc-mode 0) 
       (slime-autodoc-mode 1)))) 

(add-hook 'slime-repl-mode-hook 
      (lambda() 
      (if (string= (slime-lisp-implementation-type) "Clojure") 
       (progn (setq slime-use-autodoc-mode nil) 
         (slime-autodoc-mode 0)) 
       (progn (setq slime-use-autodoc-mode t) 
        (slime-autodoc-mode 1))))) 

La soluzione sembra grande sulla carta, ma per me melma-lisp-implementazione-tipo è sempre pari a zero. (lo stesso per slime-lisp-implementation-type: connlocal con connessioni locali).

Quello di cui ho bisogno fondamentalmente è solo un modo per sapere che eseguo SLIME con lo sweak di Clojure per poter modificare le impostazioni problematiche.

+0

Che sistema operativo stai? Ho funzionato su Mac OS X (anche se probabilmente funziona anche in Linux) e ne ho parlato qui http://spacemanaki.posterous.com/setting-up-emacs-for-lisp-hacking-on-os-x- pt-0 e risposta a questa domanda http://stackoverflow.com/questions/4551283/what-is-wrong-with-my-emacs-slime-setup-compile-and-load-eval-not-working/4555421#4555421 L'unico modo per farlo funzionare era avere sia l'ultimo CVS SLIME che l'ELPA SLIME e caricare quello appropriato a seconda che stavo lavorando su Common Lisp o Clojure. – spacemanaki

+1

Sto usando Linux. Sono a conoscenza della soluzione che proponi, ma non mi piace - voglio solo usare CVS SLIME tutto il tempo. Potrei avere una semplice funzione che commuta ciò di cui ho bisogno prima di creare connessioni di tipo clojure, ma preferirei trovare un modo per collegare automaticamente tali impostazioni all'avvio di slime. –

+0

Non mi piace neanche, ma funziona. Terrò un occhio su questo thread per vedere se qualcuno suggerisce qualcosa di meglio, perché ora ho rinunciato a rasare questo particolare yak. – spacemanaki

risposta

4

Sembra che la soluzione a questo problema sia stata appena creata. Si chiama jack-in. Fondamentalmente è solo bisogno di fare tre cose:

  1. Installare clojure-mode tramite git o marmellata
  2. Lein plugin install Swank-clojure 1.3.1
  3. Invoke Mx clojure-jack-in da un progetto

Questo riavvierà automaticamente il SLIME supportato. Non è più necessario installarlo tramite ELPA. Ho avvolto il mio init Common Lisp in una funzione interattiva che posso chiamare quando ne ho bisogno, perché il caricamento di Clojure SLIME danneggia naturalmente alcune impostazioni. Non è come l'ideale soluzione a supporto Clojure monte di melma, ma è molto meglio della maggior parte alternativa ...

Aggiornamento:

SLIME non è più necessaria per lo sviluppo Clojure. Ti consiglio di utilizzare invece CIDER.