有没有办法获得你在跟随模式中找到的行为,但是在不同的框架中将它放在多个窗口中?
我必须使用一些讨厌的遗留代码,它有七个页面块,八层深度嵌套for循环,带有很多goto,它有助于尽可能多地查看代码(为了充分理解并重写它而不破坏其他一切)。
我能看到的代码越多越好。
答案 0 :(得分:3)
此限制由follow-all-followers
在next-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
函数来执行您想要的操作。