我使用说明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切换到右侧的窗口?
答案 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))