4

我目前正在使用 emacs 进行编程。我在 .emacs 中定义了一个函数,它保存我的所有工作并执行解释器以在当前打开的 shell 缓冲区中运行我的工作。通常我会在一帧或多帧中进行编辑,并在单独的帧中打开外壳。我遇到的问题是,当我运行我的保存和执行功能时,所有内容都已保存,但外壳缓冲区随后会显示在我当前正在编辑的帧中。所以我有两帧显示 shell 缓冲区,我看不到我刚刚编辑的源代码。很多时候,当我在编程时,我想立即将代码的输出与我刚刚编写的代码进行比较。它'

(defun execute-script ()
  "Switch to shell buffer and re-execute the last command."
  (interactive)
  (save-some-buffers)
  (switch-to-buffer "*shell*")
  (end-of-buffer)
  (comint-previous-input 0)
  (comint-send-input))

正如你所看到的,我的功能目前相当原始,只是在 shell 中重新执行最近使用的命令。

我知道 Emacs 具有切换到不同帧中的缓冲区的功能,因为 ido 缓冲区切换器代码就是这样做的。有人对我需要用什么来替换对 switch-to-buffer 的调用以获得所需的效果有任何指示吗?

问候贾尔斯。

4

2 回答 2

3

交换

(switch-to-buffer "*shell*")

为了

(switch-to-buffer-other-window "*shell*")

这将强制执行两个窗口布局,左侧是先前的缓冲区,右侧是 shell 缓冲区。
编辑:如果您使用的是多框架布局而不是多窗口布局,您可以使用

(switch-to-buffer-other-frame "*shell*")
于 2012-05-22T09:26:02.790 回答
1

您还可以使用pop-to-bufferwhich 稍后将让您准确自定义其行为方式,例如 via display-buffer-reuse-frame、 or display-buffer-alist、 or special-display-regexp

于 2012-05-23T01:22:56.183 回答