6

フォローモードで見られるような動作を取得する方法はありますが、それを複数のウィンドウにまたがって別々のフレームで実行できますか?

私はいくつかの厄介なレガシー コードで作業しなければなりません。これは、8 レベルの深さのネストされた for ループの 7 ページ ブリックと、多くの goto を使用して、できるだけ多くのコードを確認するのに役立ちます (十分に理解して書き直すために)。他のすべてを壊すことなく)。

一度に表示できるコードが多ければ多いほど良いのです。

4

1 に答える 1

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ん。

于 2012-10-07T20:32:10.317 に答える