2012-10-06 19 views
6

Czy istnieje sposób na zachowanie, które można znaleźć w trybie podążania, ale czy ma ono wiele okien w osobnych ramkach?Kolejny tryb emacs między ramkami

Muszę pracować z jakimś nieprzyjemnym, starszym kodem, który ma siedmio-stronne klocki o głębokości ośmiu poziomów zagnieżdżone dla pętli z partycjami losów i pomaga zobaczyć jak najwięcej kodu, jak to możliwe (w celu odpowiedniego zrozumieć i przepisać bez łamania wszystkiego).

Im więcej kodu widzę na raz, tym lepiej.

+2

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

Odpowiedz

3

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.

+0

To jest dobre miejsce do rozpoczęcia. Dzięki. – Ishpeck

Powiązane problemy