【发布时间】:2012-02-09 21:42:39
【问题描述】:
我遇到了this gist
(defun swap-windows ()
"If you have 2 windows, it swaps them."
(interactive)
(cond ((not (= (count-windows) 2))
(message "You need exactly 2 windows to do this."))
(t
(let* ((w1 (first (window-list)))
(w2 (second (window-list)))
(b1 (window-buffer w1))
(b2 (window-buffer w2))
(s1 (window-start w1))
(s2 (window-start w2)))
(set-window-buffer w1 b2)
(set-window-buffer w2 b1)
(set-window-start w1 s2)
(set-window-start w2 s1)))))
today,只要正好有两个窗口,它就会在两个窗口中交换缓冲区的内容。对我来说,问题是我通常运行 ecb,这会创建 1 个或多个额外的窗口。除了从其他地方获得的调整方法之外,我从来没有真正用 elisp 做过任何事情,而且这个(希望)简单的改变有点超出我目前的理解。
我花了一些时间查看 ecb 信息和 emacs 手册,但找不到合理的方法来确定是否正好打开了两个非 ecb 窗口。
我还尝试在 ecb 窗口上使用“bury-buffer”之类的东西,所以我可以假设它们不会在列表的前面,但这是一种有缺陷的方法。
所以我的问题是,有没有办法修改要点以使其与 ecb 一起使用?我假设 ecb windows 有什么特别之处,但我找不到任何可以访问的东西。
【问题讨论】: