2011-10-04 11 views
18

O ile mi zrozumieć, co następuje sekwencja poleceńdefinicje Reset i przeładować .emacs bez zamykania lub ponownego uruchomienia Emacs i ponownie otwarte buforów

M-x load-file ENTER 
~/.emacs 
ENTER 

byłoby reload mój plik .emacs. Jednak z tego, co przeczytałem na innych forach, nie ma gwarancji, że da mi całkowicie zmienioną konfigurację, tj. Zmusiłoby Emacsa do parsowania nowego pliku konfiguracyjnego i załadowania zmodyfikowanych zmiennych i definicji funkcji, ale nie usunęłoby wcześniej załadowanych definicji .

Z tym, moje pytania są następujące:

  1. Czy to możliwe, aby usunąć upy definicje Emacs w pamięci i ponownym obciążeniu .emacs bez konieczności ponownego uruchomienia pełni Emacs?
  2. Jeśli powyższe nie jest możliwe, czy istnieje sposób na ponowne uruchomienie Emacsa (tak, że parsuję mój plik .emacs od podstaw) z prośbą o ponowne otwarcie wszystkich otwartych buforów?
+2

+1, aby odeprzeć (dziwne) downvote ... co jest nie tak z tym pytaniem? –

+0

Dlaczego próbujesz ponownie załadować cały plik? Części pliku, które, jak wiesz, zmieniły się, można ponownie uruchomić za pomocą eval-region –

+3

Załóżmy, że masz '(setq config-var t)' dla niektórych zmiennych, których domyślną wartością jest 'nil'. Jeśli usuniesz tę linię z pliku, nie możesz odtworzyć domyślnego zachowania, ponownie wczytując tylko część pliku (która jest teraz pusta) lub nawet cały plik. Musisz śledzić każdą zmianę, którą wprowadzasz i jakoś ją cofnąć, co jest groźne i może nawet nie być możliwe. –

Odpowiedz

11

Cofanie wszystkiego, co mogło być wykonane w twoim .emacs, jest niemożliwe.

Możesz zapisać i przywrócić sesję emacsa za pomocą desktop. Wyjdź z M-x desktop-save RET C-x C-c, a następnie przywróć przy pomocy emacs -f desktop-read.

Aby uzyskać więcej informacji, patrz (info "(emacs) Saving Emacs Sessions"). (Można również customizedesktop-save-mode więc, że takie zachowanie jest domyślnie.)

+1

Zobacz także http://porkmail.org/elisp/recover-buffers/co pozwala na ponowne przejrzenie wszystkich buforów otwartych, gdy Emacs zakończy działanie lub ulegnie awarii. Ujawnienie: Napisałem to. – tripleee

4

To pytanie jest duplikatem, ale jak to ma zaakceptowanej odpowiedzi powtórzę moje komentarze o bibliotece pulpitu, które jest, że przechowuje pewną ilość stanu (tryby i zmienne lokalne) z każdym zapamiętanym przez siebie buforem, a następnie przywraca ten sam stan podczas ponownego ładowania tych plików.

W twoim przypadku, to jest dokładnie to, co chcesz , a nie.

Zapoznaj się z artykułem Reload .emacs for all active buffers, aby uzyskać prosty sposób przywracania (ponownego ładowania) wszystkich buforów.

Połączenie obu podejść pozwoli Ci zrestartować Emacs, a na pulpicie przywrócić pliki, w którym to momencie możesz przywrócić wszystkie pliki.