在进行C-c C-1时,Emacs中的Clojure inferior-lisp窗口显示在代码上

时间:2010-08-20 06:41:46

标签: emacs clojure

我使用说明at Clojure's web site为Clojure设置了我的Emacs。我在设置inferior-lisp-program变量时使用了第一个选项,基本上是“java clojure.main”。

通过这个设置,C-c C-z可以让我进入Clojure REPL。但是,当我正在编辑文件并输入C-c C-l以将文件加载到REPL时,Emacs总是将缓冲区从代码窗口切换到REPL窗口。这非常恼人。即使我有两个真正拆分的窗口,左边的代码和右边的REPL也会发生这种情况。我最终得到了两个镜像的REPL窗口。

我记得Clojure Box,它是Windows上的Emacs + Clojure,做得对,所以我知道这是一个设置问题。

如何让Emacs切换到右侧的窗口?

4 个答案:

答案 0 :(得分:1)

我使用C-c C-k编译当前缓冲区。然后,在任何运行REPL的缓冲区中,您都可以使用该编译的结果.Emacs不会切换任何缓冲区:您只是编译缓冲区。

答案 1 :(得分: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在大多数情况下似乎有点笨拙。我通常的工作流程涉及将区域设置为整个缓冲区并使用lisp-eval-region调用C-c C-r。此函数接受一个选项and-go参数,该参数指示在调用之后是否应切换到inferior-lisp进程缓冲区。

当我继续工作时,我通常会重新定义一个函数并在我使用lisp-eval-last-sexp进行评估时使用C-c C-e进行评估,and-go也接受可选的{{1}}标记。

答案 2 :(得分:0)

我正在使用版本为20100404的SLIME,这不会发生在我身上,不会发生在C-c C-l上,也不会发生在C-c C-k上。也许你正在使用不同的slime.el版本?使用M-x find-library <RET> slime <RET>并在热门评论中查找其版本,以查看此内容。

答案 3 :(得分:0)

在inf-lisp.el中,您可以看到它将“* inferior-lisp *”添加到相同缓冲区窗口的列表中:

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

要从此列表中删除它,您可以输入.emacs:

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