2012-04-25 43 views
2

編輯對於那些我還沒有完全理解但我的CX策註定要EVAL-最後SEXP和,而不是原因(?) slime-eval-last-expression。現在我可以Cx Ce.clj緩衝區,我至少可以直接看到當我的功能是(正確)但是,但是,這顯然不會使功能我只是slime-eval-last-表達式「可用」給REPL。怎麼辦EVAL-最後SEXP對Clojure的代碼相當於

我設置了我的Emacs來做一些Clojure編程,我不知道我的設置是否正確。

我有兩個緩衝區:一個用於.clj文件,另一個用於REPL。我正在使用clojure-jack-in來啓動REPL。

顯然,我需要時刻編譯.clj(其中總是強迫我保存提示的文件),然後我需要切換到REPL併發出(使用「myname.space )之前,能夠嘗試,比如說,我寫了一個新的功能。

這是很多按鍵,看起來像一個非常簡單的事情。

當然,我可以編寫一個Emacs宏來做整個保存/確認/切換到REPL/issue(使用'myname.space) shebang但我想知道我的設置是否正確?

我想我的問題換句話說就是:我連接的REPL應該總是與包含.clj的緩衝區「同步」嗎?我正在處理還是不處理?

回答

3

如果您使用Emacs編輯clojure,則應該使用Slime。請看https://github.com/technomancy/swank-clojure

然後,當您使用Mx clojure-jack-in在emacs中啓動並連接REPL時,您可以執行Cx Ce來編譯和加載當前的sexp,或者Cx Ck來編譯和加載當前緩衝區。

換句話說,您的repl並不是「自動」與您剛剛在某個clojure代碼緩衝區中輸入的內容同步的,但是有更快更簡單的方式將代碼從緩衝區發送到正在運行的clojure程序。

+0

但我使用* clojure-jack-in * ...如果我問什麼Cx Ce綁定它說* eval-last-sexp *,它顯然試圖評估代碼,就好像它是elisp代碼(?)。換句話說:每次我嘗試從緩衝區中* eval-last-sexp *,我都會得到一個異常。相同的文件使用C-C C-k編譯良好,並且相同的函數在REPL中工作正常(使用剪切/粘貼或調用* use *)。什麼是函數* C-x C-e *應該運行的名稱? * eval-last-sexp *? – 2012-04-25 15:34:15

+0

我認爲第一個問題是我的C-x C-e綁定了* eval-last-sexp *而不是* slime-eval-last-expression *。對於所說的整個問題不是100%肯定的。 – 2012-04-25 16:12:21