6

有没有办法获得像您在跟随模式中发现的行为但在单独的框架中跨多个窗口的行为?

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

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

4

1 回答 1

3

此限制follow-all-followers在其对 的调用中明确设置next-window

这是一个基本的解决方法。您很快就会注意到一些缺陷(例如,您可能需要手动排列框架),但它有助于利用所有框架的基本要求,并且您应该能够使其正常工作。

我还建议FrameMove和 WindMove 可能证明对这种安排非常有用。

(defmacro with-temporary-advice (function class name &rest body)
  "Enable the specified advice, evaluate BODY, then disable the advice."
  `(progn
     (ad-enable-advice ,function ,class ,name)
     (ad-activate ,function)
     ,@body
     (ad-disable-advice ,function ,class ,name)
     (ad-activate ,function)))

(defadvice next-window (before my-next-window-all-frames disable)
  "Enforce the ALL-FRAMES argument to `next-window'."
  (ad-set-arg 2 'visible))

(defadvice follow-all-followers (around my-follow-all-frames activate)
  "Allow `follow-mode' to span frames."
  (with-temporary-advice
   'next-window 'before 'my-next-window-all-frames
   ad-do-it))

相反,您可能更喜欢简单地重新定义follow-all-followers函数来做您想做的事情。

于 2012-10-07T20:32:10.317 回答