跨框架的emacs跟随模式

时间:2012-10-06 00:45:02

标签: emacs frame

有没有办法获得你在跟随模式中找到的行为,但是在不同的框架中将它放在多个窗口中?

我必须使用一些讨厌的遗留代码,它有七个页面块,八层深度嵌套for循环,带有很多goto,它有助于尽可能多地查看代码(为了充分理解并重写它而不破坏其他一切)。

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

1 个答案:

答案 0 :(得分:3)

此限制由follow-all-followersnext-window的调用中明确设置。

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

我还建议使用WindMove FrameMove可能对此安排非常有用。

(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函数来执行您想要的操作。