【发布时间】:2013-10-10 15:03:23
【问题描述】:
在 Emacs 21.x 中,我不知道是通过对拆分窗口的特定自定义还是由于 Emacs 的不同默认行为,除了拆分窗口之外还调用了以下拆分窗口,它在非焦点窗口到下一个缓冲区。
目前(Emacs 24.x),split-window 和兄弟姐妹 split-window-below 和 split-window-right 似乎不允许这样的自定义。这是真的吗?
如果是这样,如何调整 Emacs 以使其具有这种行为?重新定义 split-window 或 split-window-below 和 split-window-right 以在非聚焦窗口上切换到下一个的额外步骤。这可以通过建议来完成:
(defun split-window-and-next-buffer (new-window)
(let ((old-window (selected-window)))
(select-window new-window)
(next-buffer)
(select-window old-window)
new-window))
(defadvice split-window-right (after split-window-right-and-next-buffer
activate protect compile)
(split-window-and-next-buffer ad-return-value))
(defadvice split-window-below (after split-window-bellow-and-next-buffer
activate protect compile)
(split-window-and-next-buffer ad-return-value))
根据 lawlist 指示的更正,这些建议已经在上面提供,并且我得到了预期的行为,但是不能自定义旧的行为。
【问题讨论】:
-
在几天前构建的当前版本的 Emacs Trunk 中,
split-window-below垂直拆分窗口,两个窗口中出现相同的缓冲区 --Split the selected window into two windows, one above the other. The selected window is above. The newly split-off window is below, and displays the same buffer. Return the new window.。顺便说一句——你拼错了几次below。 -
@lawlist,感谢您的回答和指出错误。我已经更新了问题,现在我的基于建议的简单解决方案已经奏效。