Każdego dnia uruchamiam emacsa i otwieram dokładnie te same pliki, które otworzyłem poprzedniego dnia. Czy jest coś, co mogę dodać do pliku init.el, aby ponownie otworzył wszystkie bufory, których używałem, kiedy ostatnio opuszczałem emacsa?
Każdego dnia uruchamiam emacsa i otwieram dokładnie te same pliki, które otworzyłem poprzedniego dnia. Czy jest coś, co mogę dodać do pliku init.el, aby ponownie otworzył wszystkie bufory, których używałem, kiedy ostatnio opuszczałem emacsa?
Odpowiedzi:
Możesz użyć biblioteki Emacs Desktop :
Możesz zapisać pulpit ręcznie za pomocą polecenia Mx desktop-save. Możesz także włączyć automatyczne zapisywanie pulpitu po wyjściu z Emacsa i automatyczne przywracanie ostatnio zapisanego pulpitu po uruchomieniu Emacsa: użyj bufora dostosowywania (zobacz Łatwe dostosowywanie), aby ustawić tryb zapisywania pulpitu na t dla przyszłych sesji lub dodaj ten wiersz w pliku ~ / .emacs:
(desktop-save-mode 1)
M-:
wykonanie (setq debug-on-error t)
, a następnie wywołaj desktop-revert
i może złapać problematyczny błąd w debugerze. Dla mnie było to ustawienie globalne, które miało być lokalnym buforem, powodując niepowodzenie przywracania ramek. (Tylko przy użyciu emacs --debug-init
może złapać problem zbyt, ale kiedyś dawną metodę.)
Chociaż podejrzewam, że pytanie dotyczyło funkcjonalności "pulpitu" emacsa (patrz powyższa odpowiedź), podejście Lewapa może być przydatne, jeśli zestaw plików, których się używa, jest rzeczywiście tym samym zestawem plików. Właściwie można pójść o krok dalej i zdefiniować `` profile '', jeśli ma się różne zestawy regularnie używanych plików ... Szybki przykład:
(let ((profile
(read-from-minibuffer "Choose a profile (acad,dist,lisp,comp,rpg): ")
))
(cond
((string-match "acad" profile)
(dired "/home/thomp/acad")
(dired "/home/thomp/acad/papers")
)
((string-match "lisp" profile)
(setup-slime)
(lisp-miscellany)
(open-lisp-dirs)
)
((string-match "rpg" profile)
(find-file "/home/thomp/comp/lisp/rp-geneval/README")
(dired "/home/thomp/comp/lisp/rp-geneval/rp-geneval")
... etc.
Jeśli zauważysz, że podczas pracy regularnie przełączasz się między różnymi zestawami regularnie używanych plików, rozważ użycie perspektyw i zapełnienie każdej perspektywy pożądanym zestawem regularnie używanych plików.
Do przechowywania / przywracania buforów / zakładek (szczególnie zakładek elscreen): Używam elscreen, a sposób, w jaki zarządzam przechowywaniem / przywracaniem sesji pulpitu i konfiguracją zakładki elscreen, jest następujący kod w moim pliku .emacs (użyte nazwy są oczywiste i jeśli funkcje przechowujące / przywracające nie powinny być wykonywane za każdym razem, gdy emacs uruchamia się, po prostu zakomentuj wiersze z "(push # 'elscreen-store kill-emacs-hook)" i "(elscreen-restore)"):
(defvar emacs-configuration-directory
"~/.emacs.d/"
"The directory where the emacs configuration files are stored.")
(defvar elscreen-tab-configuration-store-filename
(concat emacs-configuration-directory ".elscreen")
"The file where the elscreen tab configuration is stored.")
(defun elscreen-store ()
"Store the elscreen tab configuration."
(interactive)
(if (desktop-save emacs-configuration-directory)
(with-temp-file elscreen-tab-configuration-store-filename
(insert (prin1-to-string (elscreen-get-screen-to-name-alist))))))
(push #'elscreen-store kill-emacs-hook)
(defun elscreen-restore ()
"Restore the elscreen tab configuration."
(interactive)
(if (desktop-read)
(let ((screens (reverse
(read
(with-temp-buffer
(insert-file-contents elscreen-tab-configuration-store-filename)
(buffer-string))))))
(while screens
(setq screen (car (car screens)))
(setq buffers (split-string (cdr (car screens)) ":"))
(if (eq screen 0)
(switch-to-buffer (car buffers))
(elscreen-find-and-goto-by-buffer (car buffers) t t))
(while (cdr buffers)
(switch-to-buffer-other-window (car (cdr buffers)))
(setq buffers (cdr buffers)))
(setq screens (cdr screens))))))
(elscreen-restore)
emacs-configuration-directory
z user-emacs-directory
których Emacs już przewiduje.
Istnieją przydatne ulepszenia, które możesz wprowadzić do podstawowej funkcji pulpitu. Szczególnie przydatne (IMO) są metody automatycznego zapisywania pulpitu podczas sesji, ponieważ w przeciwnym razie, jeśli twój system się zawiesi, utkniesz z plikiem pulpitu, z którym rozpocząłeś tę sesję - dość denerwujące, jeśli masz tendencję do utrzymywania Emacsa uruchomionego przez wiele osób dni na raz.
http://www.emacswiki.org/emacs/DeskTop
Wiki zawiera również przydatne informacje o utrwalaniu danych między sesjami:
http://www.emacswiki.org/emacs/SessionManagement
Szczególnie w przypadku komputerów stacjonarnych pomyślałem, że program Desktop Recover wygląda szczególnie obiecująco, jednak jeszcze go nie wypróbowałem.
(find-file-noselect "/my/file")
otworzy go cicho, tj. bez podniesienia bufora. Tylko mówię.
EDYTUJ To polecenie nie jest interaktywne ; Aby to przetestować, musisz ocenić wyrażenie, na przykład ustawiając kursor za ostatnim nawiasem i naciskając Cx Ce
Głosowanie za tym nie jest fajne ; to polecenie zdecydowanie działa i jest objęte zakresem pytania.