2011-05-13 75 views
9

我一直有與建立泥和Clojure的都和Common Lisp的工作麻煩。大多數Clojure開發人員傾向於使用通過ELPA提供的精簡版SLIME,該版本針對Clojure兼容性進行了凍結。然而,我做了很多Common Lisp黑客攻擊,我通常使用SLIME CVS版本(通過QuickLisp獲取)。泥設置兩個Common Lisp的Clojure的和發展

Clojure的Swank實現中有一些衆所周知的問題 - 它不適用於autodoc(如果它啓用SLIME凍結),它不支持某些事情,如模糊完成等。這question討論答案相同的主題表明,對我來說是不行的。

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

該解決方案在紙上看起來不錯,但對我來說,slime-lisp-implementation-type始終爲零。 (與slime-lisp-implementation-type相同:connlocal與本地連接)。

我基本上需要的只是知道我跑泥和Clojure的斯萬克才能夠修改出現問題的設置方式。

+0

什麼OS是你嗎?我在Mac OS X中得到了這個工作(儘管它也可能適用於Linux)並在此處發佈了博客http://spacemanaki.posterous.com/setting-up-emacs-for-lisp-hacking-on-os-x- PT -0和回答這個問題http://stackoverflow.com/questions/4551283/what-is-wrong-with-my-emacs-slime-setup-compile-and-load-eval-not-working/4555421#4555421唯一可以實現它的方法是同時使用最新的CVS SLIME和ELPA SLIME,並根據我是在使用Common Lisp還是Clojure來加載適當的CVS SLIME和ELPA SLIME。 – spacemanaki 2011-05-13 17:01:18

+1

我正在使用Linux。我知道你提出的解決方案,但我不喜歡它 - 我只是想一直使用CVS SLIME。我可以有一個簡單的函數,在我進行clojure連接之前切換需要的內容,但我更願意找到一種方法將這些設置自動掛接到粘液的啓動中。 – 2011-05-13 21:19:52

+0

我也不喜歡它,但它有效。我會密切關注這個線索,看看有人提出更好的建議,因爲現在我已經放棄了剃這個特殊的犛牛。 – spacemanaki 2011-05-14 05:29:46

回答

4

看來這個問題的解決方案剛剛創建。它被稱爲jack-in。基本上你只需要做三件事情:通過混帳或果醬

  1. 安裝Clojure的模式
  2. 雷音插件安裝自吹,Clojure的1.3.1
  3. 調用的Mx Clojure的插孔,在從項目

這將自動引導支持的SLIME。您不再需要通過ELPA進行安裝。我已經將我的Common Lisp init包裝在一個交互式函數中,我可以在需要時調用它,因爲加載Clojure SLIME自然會產生一些設置。它並不像理想的解決方案在泥上游Clojure的支持,但它比最另類的要好得多......

更新:

煤泥不再需要Clojure的發展。我建議你改用CIDER