2010-04-24 22 views
13

Szukałem, jak przywrócić sesję emacs, bez powodzenia. Szukam przywrócenia wszystkich wcześniej otwartych buforów, z których niektóre mogą zawierać erc, powłoki, katalogi, pliki itp.Przywróć sesję Emacsa/Desktop

Za każdym razem, gdy otwieram emacs, spędzam znaczną ilość czasu na organizowaniu buforów; dzielenie ich na rzędy i kolumny, otwieranie powłoki, organizowanie kanałów irc. Trzeba trochę czasu, aby dostać się do pracy.

Próbowałem dodanie następujących do mojego init.el

(desktop-save-mode 1) 

a następnie użycie M-x desktop zapisać. To wydaje się tylko przywracać pliki, które są otwarte, a nie powłoki lub cokolwiek innego działającego w buforach.

Ja również sprawdzana na następujące pytania:

i czytać przez:

Oto screenshot example z mojej sesji emacs.

Prosta odpowiedź byłaby po prostu skupić się na prawdziwej pracy: P

Odpowiedz

8

którą proponujemy proste rozwiązanie - stworzyć funkcję, która ustawia się preferowany układ. Na przykład lubię mieć kilka kanałów IRC w drugiej połowie ekranu w osobnych oknach, tak, że mogę od czasu do czasu je przeglądać, podczas gdy na przykład w innym oknie. Więc pisałem jakiś prosty kod, aby zadbać o podziału okna i zorganizować moje bufory jak chcę:

;; show some buffers 
(defun show-some-buffers (buffer-list) 
    (split-window-horizontally) 
    (other-window 1) 
    (dolist (buffer buffer-list) 
    (split-window-vertically) 
    (switch-to-buffer (get-buffer buffer)) 
    (other-window 1)) 
    ;; at the end we have one extra window we need to delete 
    (delete-window) 
    (balance-windows)) 

;; show some erc buffers 
(defun show-erc-buffers() 
    (interactive) 
    (show-some-buffers '("#emacs" "#clojure"))) 

Kod jest dość prosta i posiada żadnego sprawdzania błędów, ale to daje wskazówkę o tym, co Mam na myśli.

Możesz również rozważyć użycie registers, aby zapisać niektóre konfiguracje okien.

+0

Dziękuję bardzo za szczegółową odpowiedź. Przy odrobinie pracy jestem pewien, że dzięki temu podejściu będę miał dobre rozwiązanie. Twoje zdrowie. –

+0

Bardzo ładne, modularne rozwiązanie. – aartist

2

Oprócz doskonałej odpowiedzi @ Bozhidara na automatyzację układu okna (co robię osobiście), warto również przyjrzeć się użyciu GNU Screen, które można wykorzystać do zachowania dowolnego zestawu procesów w logach. Jest całkiem niezły tutorial here, a ponieważ będziesz używać emacsa, będziesz także chciał dać this przeczytanie.

4

Jak można zauważyć, desktop.el i session.el są dobrym początkiem, ale nie przywracają układów okien.

Jednak za pomocą revive.el można zapisywać/przywracać dowolne konfiguracje okien, które są pamiętane między ponownymi uruchomieniami.

Sprawdź również these hints dotyczące układów okien, które obejmują tryb zwycięzcy i sztuczkę zapisywania konfiguracji okien w rejestrach.