Jak skonfigurować domyślne okna podczas uruchamiania?


18

Za każdym razem, gdy otwieram Emacsa, mam tendencję do konfigurowania 3 okien, wykonując C-x 3( split-window-right), a następnie C-x2( split-window-below). Następnie muszę przejść do każdego okna, aby otworzyć pliki, które chcę edytować.

Jak ustawić, aby było to wykonywane automatycznie?

Czy istnieje sposób, aby Emacs odzyskał tę samą organizację ekranu (okna i pliki) od ostatniego użycia?

Odpowiedzi:


13

Od Emacsa 24.4 możesz używać trybu zapisywania na pulpicie . Od dawna jest częścią Emacsa, ale układ okna jest zapisywany i przywracany dopiero od wersji 24.4.

Po prostu dodaj ten wiersz do pliku init:

(desktop-save-mode 1)

3
Spowoduje to przywrócenie plików z poprzedniej sesji, ale nie przywróci układu okna.
itsjeyd

1
Nie, przetestowałem to. Podręcznik Emacsa : Po zapisaniu pulpitu Emacsa - buforów, ich nazw plików, głównych trybów, pozycji buforów itd. - kolejne sesje Emacsa ponownie ładują zapisany pulpit.
Sviridov Alexander

3
„Pozycja bufora” odnosi się do pozycji punktu (kursora) w danym buforze. Tak, zostanie to przywrócone za pomocą desktop-save-mode. Układ okna odnosi się do liczby wyświetlanych okien i ich położenia. desktop-save-modenie zachowuje tego układu.
itsjeyd

3
Tak, „układ okna” i „pozycja bufora” to różne rzeczy, masz rację. Ale mój układ okien został przywrócony. Wygląda na to, że zapisywanie układu okna zostało dodane w migawce emacs.
Sviridov Alexander

1
@pors, wydaje się, że nie jest tak, jeśli używasz Emacsa (24.4 lub nowszego) w trybie terminalowym. Żadna konfiguracja okna nie jest zapisywana / przywracana.
skyork

7

napisz funkcję zbliżoną do tej w pliku init, prawdopodobnie będziesz musiał ją nieco zmodyfikować, aby dopasować do swoich potrzeb:

;; layout definition
(defun my-startup-layout ()
 (interactive)
 (delete-other-windows)
 (split-window-horizontally) ;; -> |
 (next-multiframe-window)
 (find-file "~/.emacs.d/init.el")
 (split-window-vertically) ;;  -> --
 (next-multiframe-window)
 (find-file "~/.emacs.d/init_settings.el")
 (next-multiframe-window)
 (dired "~")
)

;; execute the layout
(my-startup-layout )

czy istnieje sposób, aby Emacs odzyskał tę samą organizację ekranu (okna i pliki) od ostatniego użycia?

Powinieneś rzucić okiem na pakiet układu


6

Możesz użyć workgroups2do zarządzania pulpitem. Z pliku README na GitHub:

Workgroups to menedżer sesji dla Emacsa.

  • Zapisuje wszystkie otwarte bufory, ich lokalizację i rozmiary na dysku, aby przywrócić je później
  • Możesz utworzyć kilka obszarów roboczych

Możesz także przywrócić takie bufory jak: org-agenda, shell, status magit, help.

Jeśli masz włączone repozytorium MELPA , możesz zainstalować ten pakiet za pośrednictwem M-x package-install RET workgroups2 RET.

Podstawowa konfiguracja to:

(require 'workgroups2)
(workgroups-mode 1) ; This should go at the end of your init file

Kiedy uruchomisz ponownie Emacsa po raz pierwszy po dodaniu tego kodu do pliku init, workgroups2automatycznie utworzy dla ciebie grupę roboczą. Możesz sprawdzić, czy się udało, sprawdzając w *Messages*buforze następujące informacje:

Workgroups Mode: on
Switched: First workgroup
Created: First workgroup  ( -<{ 0: First workgroup }>- )

Od tego momentu Emacs zapisze bieżącą konfigurację okien i plików automatycznie przy wyjściu i przywróci ją przy następnym uruchomieniu.


2

Używam czegoś wzorowanego na .emacs.d firmy sanityinc . Używa desktop-save-mode, a także jest wystarczająco inteligentny, aby używać go frame-restorew starszych wersjach emacsa. Z pliku readme frame-restorez package-list-packages:

Zapisz i przywróć parametry ramek Emacsa.

Wystarczy wywołać frame-restore' in yourinit.el ':

(tryb przywracania klatek)

Zauważ, że od r113242 wbudowany tryb zapisywania pulpitu przywróci ramki. Jeśli używasz kompilacji migawki Emacsa późniejszej niż ta wersja, zdecydowanie zalecamy użycie trybu zapisywania pulpitu:

(tryb oszczędzania na pulpicie)

Tryb przywracania ramek wyświetla odważne ostrzeżenie, jeśli jest włączony w kompilacji Emacsa, której tryb zapisywania pulpitu może przywracać ramki.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.