To ograniczenie jest wyraźnie określone przez follow-all-followers
w jego wywołaniu do next-window
.
Oto podstawowe rozwiązanie. Istnieje kilka niedociągnięć, które zauważysz dość szybko (np. Możesz ręcznie ustawić ramki), ale to ułatwia podstawowe użycie wszystkich ramek i powinieneś być w stanie go uruchomić.
Sugerowałbym również, że FrameMove z WindMove może okazać się bardzo przydatne dla tego układu.
(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))
Można zamiast tego wolą po prostu przedefiniować funkcję follow-all-followers
do robienia tego, co chcesz.
Ograniczenie to istnieje z dwóch powodów: 1) nie ma naturalnej "pierwszej klatki", więc trudno byłoby w trybie podążania ustalić, w jakiej kolejności uporządkować zawartość okien. 2) Pozwala użytkownikowi otworzyć kilka ramek, z których każda wyświetla różne części bufora. Dlaczego nie użyjesz jednej dużej ramki - moja ma sześć kolumn szerokości i rozciąga się na dwa fizyczne monitory, co daje mi w sumie 888 linii. – Lindydancer