我目前正在使用emacs进行编程。我在.emacs中定义了一个函数,它保存我的所有工作,并执行解释器在当前打开的shell buffer中运行我的工作。通常,我会在一个或多个框架中进行编辑,并在单独的框架中打开shell。我遇到的问题是,当我运行我的保存和执行函数时,所有内容都被保存了,但shell缓冲区随后显示在我当前正在编辑的框架中。所以我有两个显示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的调用才能得到想要的效果?
向贾尔斯致敬。
发布于 2012-05-22 17:26:03
交换
(switch-to-buffer "*shell*")为
(switch-to-buffer-other-window "*shell*")这将强制使用两个窗口的布局,之前的缓冲区在左侧,shell缓冲区在右侧。
编辑:如果您使用的是多框架布局,而不是多窗口布局,则可以使用
(switch-to-buffer-other-frame "*shell*")发布于 2012-05-23 09:22:56
您也可以使用pop-to-buffer,它稍后将允许您通过display-buffer-reuse-frame、display-buffer-alist或special-display-regexp精确地自定义它的行为。
https://stackoverflow.com/questions/10698933
复制相似问题