emacs 跨帧跟随模式

问题描述 投票:0回答:1

有没有一种方法可以像在跟随模式中那样获得行为,但可以在单独的框架中跨越多个窗口?

我必须处理一些令人讨厌的遗留代码,这些代码有七页砖块,八层深度的嵌套 for 循环,其中有很多 goto,它有助于查看尽可能多的代码(以便充分理解和重写它不会破坏其他一切)。

我一次能看到的代码越多越好。

emacs frame
1个回答
4
投票

此限制是由

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 对于这种安排可能非常有用。

© www.soinside.com 2019 - 2024. All rights reserved.