我碰到this gist如何在Emacs中列出非ECB窗口?
(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)))))
走到今天,其交换缓冲区的内容在两个窗口,只要恰好有两个窗口。对我来说问题是我通常有ecb运行,这会创建一个或多个额外的窗口。除了从其他地方获得的调整方法之外,我从来没有真正用过elisp做过任何事情,而这个(希望)简单的改变略高于我目前的理解。
我花了一些时间浏览ecb信息和emacs手册,但找不到合理的方法来确定是否有两个非ecb窗口打开。
我也尝试过在ecb窗口中使用'bury-buffer'之类的东西,所以我可以假设它们不会在列表的前面,但这是一个有缺陷的方法。
所以我的问题,有没有办法修改的要点,使其与ecb工作?我假设ecb windows有一些特别的东西,但是我找不到任何我可以访问的东西。
嗯......肯定的可能性。乍一看,它似乎调整我的窗户虽然。或者说,即使在隐藏时仍会保持均匀分割,但当ecb窗口再次显示时,其中一个(第一个?离开?)窗口保持相同宽度,而另一个会缩小。 – Chris 2012-02-08 16:21:30
我已经更新了我的答案,正如我所说,我的ECB窗口没有被调整大小,但新代码可能更接近你想要的。 – 2012-02-08 18:36:30
太棒了,谢谢!我想也许我们正在使用不同版本的emacs(说实话,我不完全确定我使用的是什么版本...我在Mac上,并且在使用brew的某处使用了24条版本说明,除此之外,我不能说脱手)。 – Chris 2012-02-08 19:35:45