有没有一种方法可以像在跟随模式中那样获得行为,但可以在单独的框架中跨越多个窗口?
我必须处理一些令人讨厌的遗留代码,这些代码有七页砖块,八层深度的嵌套 for 循环,其中有很多 goto,它有助于查看尽可能多的代码(以便充分理解和重写它不会破坏其他一切)。
我一次能看到的代码越多越好。
此限制是由
follow-all-followers
在对 next-window
的调用中显式设置的,因此可以通过此更改取消它:
(let ((windows (get-buffer-window-list
- (window-buffer win) 'no-minibuf (window-frame win))))
+ (window-buffer win) 'no-minibuf t)))
你可以像这样重新定义它:
(defun my-follow-all-followers (&optional win)
"Like `follow-all-followers' but for all frames.
Passes as the ALL-FRAMES arg to `get-buffer-window-list'."
(unless (window-live-p win)
(setq win (selected-window)))
(let ((windows (get-buffer-window-list
(window-buffer win) 'no-minibuf t)))
(sort windows #'follow--window-sorter)))
(advice-add 'follow-all-followers :override #'my-follow-all-followers)
您很快就会注意到一些缺陷(例如,您可能需要手动排列框架),但它满足了利用所有框架的基本要求,您应该能够使其工作。
我还建议使用 WindMove 的 FrameMove 对于这种安排可能非常有用。