2011-01-17 17 views
10

Moje Lisp-working-environment ma ramę podzieloną na dwa okna, pierwszy dla głównego kodowania, drugi dla mojej oceny szlamu.Jak mogę zapobiec zmianie rozmiaru okien Emacsa?

Niestety, gdy popełniłem kilka błędów (ponieważ wciąż uczę się Lisp: P), debugger śluzu ostrzega mnie, a robiąc to pojawia się w dolnym oknie, które automatycznie zmienia rozmiar. Wystarczy być bardziej wyraźne:

PRZED:

_______ 
|  | 
|  | 
_______ 
|_____| 

PO:

_______ 
|  | <- decreased in size! 
_______ 
|_____| <- increased in size! 

Jak mogę zapobiec Emacs zmienić rozmiaru moich okien? Chcę, żeby Emacs zostawił moje wymiary okien tak samo.

Jak mogę to zrobić?

Dzięki! PA!

Alfredo

+5

Uwaga: zagorzały użytkownik Emacsa mógł narysować za pomocą "artysty M-x". : P –

+1

Wow ... tryb artysty ... Nie miałem pojęcia, że ​​taka fajna zabawka została wbudowana w Emacsa ... Dzięki Trey! –

Odpowiedz

8

Można zapamiętać konfigurację okna przy użyciu poleceń M-X Window-konfiguracja-rejestr (lub C-xr w) na początku.

Po zawsze można przywrócić konfiguracje za pomocą M-x jump-to-register (lub C-x r j).

+0

Dziękuję wszystkim, to jest najbliższe temu, czego szukałem. Nie mogę używać trybu zwycięzcy z powodu konfliktu z EBC (przeglądarka Emacs Code Browser), ale konfiguracja okna do rejestracji daje brudną robotę :) –

4

Jeśli jakiś kod wywołania zmienia konfigurację oknie można owinąć kod z (SAVE-window-wycieczkowym ciała ...)

Jeśli jest debugger, który zmienia konfigurację - hit „q” i stara konfiguracja zostanie przywrócona.

Jeśli chcesz, aby debugger nie zmieniał rozmiaru, spróbuj dodać hak trybu debuggera, aby przywrócić rozmiar okna.

5

Niestety, główne polecenie pop-to-buffer, które jest używane przez prawie każdy program w emacs, aby przełączyć się na bufor w innym oknie, ma efekt uboczny, który opisałeś.

W odniesieniu do wszystkich innych rozwiązań do tej pory istnieje winner mode do cofania/ponawiania wszelkich zmian w konfiguracji okna, w dowolnym momencie.

+1

przegłosowano dla trybu zwycięzcy, tryb zwycięzcy jest niesamowity. – monotux

2

winner-mode to wybawienie, ale aby pop-to-buffer nie zmiana rozmiaru okna w pierwszej kolejności zrobić

(setq even-window-heights nil) 
1

Aby wyłączyć okno kurczy, shrink-window-if-larger-than-buffer musi być no-op. Możesz po prostu przedefiniować to, aby nic nie robić, ale jeśli ci to poradzisz, będziesz mógł włączyć i wyłączyć to dowolnie.

;; never shrink windows 
(defvar allow-window-shrinking nil 
    "If non-nil, effectively disable shrinking windows by making `shrink-window-if-larger-than-buffer' a no-op.") 
(advice-add 'shrink-window-if-larger-than-buffer 
      :before-while 
      (lambda (&rest args) 
       "Do nothing if `allow-window-shrinking' is nil." 
       allow-window-shrinking)) 

Można doradzić inne funkcje, które wywołują shrink-window-if-larger-than-buffer aby włączyć lub wyłączyć kurczenie:

(advice-add 'some-function-that-resizes-windows 
      :around 
      (lambda (orig &rest args) 
       "enable shrinkage" 
       (let ((allow-window-shrinking t)) 
       (apply orig args)))) 

miałem stary kawałek kodu, który był w zasadzie powyżej, a ja ignore-errors owinięta (apply orig args) dla niektórych zapomniany powód, ale prawdopodobnie nie jest powszechnie potrzebny.

N.B. wykorzystuje to nowy API porad, który został dodany w Emacs 24.4. Stary API porad może zrobić to samo z inną składnią, jeśli potrzebujesz starej wersji Emacsa.

Powiązane problemy