2009-12-26 41 views
9

我正在用clojure-swank和slime使用emacs並嘗試設置我的開發環境。我遇到了一個問題。當我開始repl時,我卡在一個未知的目錄中,阻止我加載我的名稱空間。因爲clojure repl無法找到正確的文件。Clojure emacs slime + swank目錄問題

有誰知道如何更改當前目錄? PS:我剛開始使用emacs和粘液,所以我是一個noob。

回答

6

如果您想要改變當前目錄的粘液概念,按,cd<CR><CR> = Enter)並輸入路徑。

但是,這不是真正解決問題的恰當方法。正確的解決方案包括設置類路徑,以便您可以(使用'your.namespace')。爲此,我想知道this very long answer我提供了一個關於正確設置類路徑的問題可能會有幫助... :-)

順便提一句,我有些反對涉及add-classpath的解決方案,因爲目前標記爲棄用從來沒有意味着首先要依靠...雖然另一方面,它當然可以可能工作得很好,值得了解以防萬一它可以派上用場,作爲一個快速和骯髒的類路徑注入手法。

現在如果你想要一個真正的基於SLIME的開發環境,我想指出一個非常好的clojure-project elisp函數,由Phil Hagelberg設置所有相關變量並在項目的主目錄中啓動SLIME (以交互方式提供)。它已經發布到Clojure組,實際上here's a link到郵件存檔的該消息的副本。請注意,有一件事需要更正 - swank-clojure-jar-path應設置爲clojure.jar的完整路徑。否則,這是一個奇妙的工具。

事實上,我在this response中提到了有關使用Clojure和Emacs時管理類路徑的問題。其他答案也可能很有趣。

如果您剛剛開始使用SLIME,請觀看鏈接到SLIME's homepage的SLIME視頻 ,該視頻現已在Michiel發表的評論中提供。這是一個很好的介紹。 :-)

+0

我打算嘗試clojure-project功能解決方案。但是在哪個文件中添加代碼? – MrHus 2009-12-26 21:03:08

+0

SLIME主頁上的視頻鏈接已死亡。該視頻仍然可以在這裏找到:http://www.guba.com/watch/3000054867 – 2009-12-27 00:09:42

+0

哦,我從來沒有注意到......謝謝,Michiel。我會相應地編輯。 @MrHus:您需要將它添加到啓動Emacs時加載的某個文件中,例如'〜/ .emacs'(on * nix)/'_emacs'(在Windows上;我相信您將它放在您的配置文件的目錄中,例如'C:\ Documents and Settings \ yourusername \ _emacs',但我完全確定,如果這不起作用的話,谷歌周圍)。只要記住修理'swank-clojure-jar-path'。順便提一下,根據你提出的這個問題來判斷,你最好查找Phil Hagelberg的'emacs-starter-kit'; http://peepcode.com/上還有一個相關的截屏視頻。 – 2009-12-27 00:54:54

4

簡短的回答:
(load-file "full-path-to-definition")

龍答: 這裏是我的引導過程是什麼樣子:

在〜/ .clojure/user.clj(這個文件是自動運行,當您啓動煤泥/ Clojure的):
(add-classpath "file://path/to/foo.jar") ; Include these jars in the classpath
(add-classpath "file://path/to/foo2.jar")
(load-file "file://workspace/bootstrap.clj")

在bootstrap.clj:
(compile 'my.package)

包文件(S)是在/workspace/my/package.clj

在package.clj:
(ns my.package)
(defn foo [] (+ 2 2))

6

Leiningen是一個新的Clojure構建工具,它可以幫助您解決類路徑問題。您可以在項目的根目錄中設置一個簡單的項目文件來指定項目的主要類,並自動發現lib目錄中的所有JAR併爲您加載它們。

我現在只需在命令行中鍵入「lein swank」,然後在Emacs中輸入M-x slime-connect,並且所有內容都可以正常工作。 (這可以通過一個小小的Elisp輕鬆實現自動化)。

更多的信息在this blog post

+0

這實際上是一個非常好的解決方案。現在我可以繼續與Textmate合作。謝謝。 – MrHus 2009-12-28 06:50:54

1

使用Emacs,SLIME和swank-clojure時發現的最佳方法是使用(Emacs Lisp)函數swank-clojure-project。從它的文檔:

(自吹,Clojure的項目PATH)

設置classpath中的Clojure的項目,並開始了新的泥會話。 殺死現有的SLIME會話(如果有的話)。

如果您做了「M-x swank-clojure-project」,它會交互式地提示您輸入項目目錄;一旦你選擇了它,lib子目錄中的所有jar以及src和classes文件夾將被添加到你的類路徑中。換句話說,它也將授予Maven/lein目錄結構:它通常只會起作用。

如果你改變了某些東西,例如添加一個新的jar文件,只需再次swank-clojure-project。

相關問題