2010-08-20 57 views
2

我使用指令at Clojure's web site設置了我的Emacs for Clojure。我使用第一個選項設置inferior-lisp-program變量,基本上是「java clojure.main」。Clojure在執行C-C代碼時顯示Emacs中的劣勢lisp窗口

使用此設置,C-C C-z可讓我進入Clojure REPL。但是,當我編輯一個文件時,我輸入C-c C -l將文件加載到REPL中,Emacs總是將緩衝區從代碼窗口切換到REPL窗口。這非常刺激。即使當我有兩個窗口在虛擬分割時,也會發生這種情況,代碼位於左側,REPL位於右側。我結束了兩個鏡像REPL窗口。

我記得Clojure Box,它是Windows上的Emacs + Clojure,這樣做是正確的,所以我知道這是一個設置問題。

如何讓Emacs切換到右邊的窗口?

回答

1

我用C-c C-k來編譯當前緩衝區。然後,該編譯的結果將在您運行REPL的任何緩衝區中提供給您.Emacs不會切換任何緩衝區:您只是編譯緩衝區。

0

我在20100404版本中使用SLIME,這不會發生在我身上,C-c C-l也不會與C-c C-k發生。也許你正在使用不同的slime.el版本?使用M-x find-library <RET> slime <RET>並在頂部註釋中查找它的版本,以查看此內容。

1

在clojure-mode v 1.7.1中,我認爲它是最新的,C-c C-l綁定到clojure-load-file',它在末尾有一個硬編碼的(switch-to-lisp t)。換句話說,如果不重新定義switch-to-lisp來檢查變量是否應該實際調用,則無法阻止其切換到lisp。

也就是說,在大多數情況下,clojure-load-file似乎有點霸道。我通常的工作流程包括將區域設置爲整個緩衝區,並使用C-c C-r調用lisp-eval-region。該函數接受一個選項and-go參數,該參數指示在調用之後是否應該切換到劣等lisp進程緩衝區。

正如我繼續工作,我通常會重新定義一個函數,當我與lisp-eval-last-sexp我與C-c C-e,這也接受可選and-go標誌調用去評估他們。

+0

這樣的聲音需要在clojure-mode.el中修復;這是一個可怕的默認行爲。 (我從來沒有使用clojure加載文件。) – technomancy 2010-08-21 00:21:52

0

在INF-lisp.el你可以看到,這將「*劣,口齒不清*」,以相同的緩衝窗口的列表:

(add-hook 'same-window-buffer-names "*inferior-lisp*") 

要從此列表中刪除,你可以把你的.emacs:

(setq same-window-buffer-names (delete "*inferior-lisp*" same-window-buffer-names))