6

Is there a way to get behavior like you find in follow-mode but have it across multiple windows in separate frames?

I've gotta work with some nasty legacy code that has seven page bricks of eight-level-deep nested for loops with lots'a goto's and it helps to see as much of the code as possible (in order to adequately understand and rewrite it without breaking everything else).

The more code I can see at once, the better.

Ishpeck
  • 2,001
  • 1
  • 19
  • 21
  • 2
    This limitation exists for two reasons: 1) there is no natural "first frame", so it would be hard for follow-mode to figure out in which order to arrange the content of the windows. 2) It allows a user to open several frames, each displaying different parts of the buffer. Why don't you use one big frame -- mine is six columns wide spreading across two physical monitors, which gives me a total of 888 lines. – Lindydancer Oct 12 '12 at 18:42

1 Answers1

3

This restriction is set explicitly by follow-all-followers in its call to next-window.

Here's a rudimentary workaround. There are some deficiencies you'll notice pretty quickly (e.g. you may need to arrange the frames manually), but it facilitates the basic requirement of utilising all frames, and you should be able to get it working.

I would also suggest that FrameMove with WindMove might prove very useful for this arrangement.

(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))

You might instead prefer to simply redefine the follow-all-followers function to do what you want.

phils
  • 71,335
  • 11
  • 153
  • 198