Jak mogę przeładować?emacs po zmianie?

Jak mogę zmusić Emacsa do przeładowania wszystkich definicji, które zaktualizowałem w .emacs bez ponownego uruchamiania Emacsa?

 324
Author: D A Vincent, 2010-04-05

18 answers

Możesz użyć polecenia load-file (M-x load-file, następnie naciśnij dwukrotnie return, aby zaakceptować domyślną nazwę pliku, która jest aktualnie edytowanym plikiem).

Możesz również po prostu przesunąć punkt na koniec dowolnego sexp i nacisnąć C-xC-E aby wykonać tylko ten sexp. Zazwyczaj przeładowanie całego pliku nie jest konieczne, jeśli tylko zmieniasz linię lub dwie.

 294
Author: Bryan Oakley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-08 02:14:59

Bardzo dziwne, że bardzo wygodne

M-x eval-buffer

Nie jest tutaj wymieniony.

Natychmiast ocenia cały kod w buforze, jest to najszybsza Metoda, Jeśli .emacs jest idempotentna.

 116
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-18 16:53:21

Zazwyczaj można po prostu ponownie ocenić zmieniony region. Zaznacz region~/.emacs, który zmieniłeś, a następnie użyj M-x eval-region RET. Jest to często bezpieczniejsze niż ponowna ocena całego pliku, ponieważ łatwo jest napisać .plik emacs, który nie działa od razu po dwukrotnym załadowaniu.

 35
Author: Dale Hagglund,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-05 19:53:24

Jeśli masz swoje .plik emacs otwiera się w aktualnie aktywnym buforze:

M-x eval-buffer
 33
Author: Dominic Rodger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-17 14:53:27
M-x load-file
~/.emacs
 24
Author: digitaldreamer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-05 19:48:47

Następujące powinny to zrobić...

M-x load-file
 12
Author: Pace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-17 14:52:58

Inni już odpowiedzieli na twoje pytanie, ale uważam, że zwykle chcę wykonać linie, które właśnie napisałem. w tym celu CtrlAltx w Lispie działa dobrze.

 10
Author: Bahbar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-13 07:07:28

Sugeruję, żebyś tego nie robił. Zamiast tego Rozpocznij nową sesję Emacsa i przetestuj wprowadzone zmiany, aby sprawdzić, czy działają poprawnie. Powodem, aby zrobić to w ten sposób, jest uniknięcie pozostawienia cię w stanie, w którym masz nieoperacyjny .plik emacs, który nie ładuje się lub nie ładuje się czysto. Jeśli wykonasz całą edycję w oryginalnej sesji, a wszystkie testy w nowej sesji, zawsze będziesz miał coś wiarygodnego, aby skomentować obrażający kod.

Kiedy jesteś w końcu jesteś zadowolony ze swoich zmian, a następnie użyj jednej z innych odpowiedzi,aby ponownie załadować. Moje osobiste preferencje to eval tylko sekcja, którą dodałeś/zmieniłeś, i aby to zrobić, po prostu zaznacz region dodanego / zmienionego kodu i wywołaj M-x eval-region. W ten sposób minimalizujemy kod, który jest oceniany, minimalizując wszelkie niezamierzone skutki uboczne, jak zauważa luapyad.

 6
Author: Joe Casadonte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 17:33:49

Skrót klawiszowy:

(defun reload-init-file ()
  (interactive)
  (load-file user-init-file))

(global-set-key (kbd "C-c C-l") 'reload-init-file)    ; Reload .emacs file
 6
Author: Matt Kneiser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-05 18:02:46
C-x C-e ;; current line
M-x eval-region ;; region
M-x eval-buffer ;; whole buffer
M-x load-file ~/.emacs.d/init.el
 5
Author: WisdomFusion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-11 10:01:40

Jestem obecnie na Ubuntu 15.04; Lubię zdefiniować klucz do tego.
[M-insert] przekłada się na alt-insert na mojej klawiaturze.
Włóż to do swojego .plik emacs:

(global-set-key [M-insert] '(lambda() (interactive) (load-file "~/.emacs")))
 3
Author: AAAfarmclub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-29 01:45:52

Zdefiniuj go w pliku init i wywołaj przez m-x reload-user-INIT-file

(defun reload-user-init-file()
  (interactive)
  (load-file user-init-file))
 2
Author: jacekmigacz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-26 12:44:25

Rozwiązanie

M -: (load user-INIT-file)


Uwagi

  • wpisujesz go w Eval: prompt (wraz z nawiasami)
  • user-init-file jest zmienną zawierającą wartość ~/.emacs (wskazującą na ścieżkę pliku konfiguracyjnego) domyślnie
  • (load) jest krótszą, starszą i nieinteraktywną wersją (load-file); nie jest to polecenie emacs (do wpisania w M-x ), ale zwykła funkcja elisp

Podsumowanie

M-: > M-x

 2
Author: w17t,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-10 07:43:45

Chociaż M-x eval-buffer będzie działać, możesz napotkać problemy z przełącznikami i innymi podobnymi rzeczami. Lepszym podejściem może być "zaznaczenie" lub podkreślenie, Co nowego w Twoim .emacs (lub nawet scratch buffer, jeśli tylko się wygłupiasz), a następnie M-x eval-region. Mam nadzieję, że to pomoże.

 1
Author: user1026139,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-02 17:44:58

Oto szybki i łatwy sposób na szybkie przetestowanie konfiguracji. Możesz również użyć C-x C-e na końcu określonego Lispu, aby wykonać określoną funkcję indywidualnie.

C-x C-e uruchamia polecenie eval-last-sexp (Znalezione w global-map), które jest interaktywną, skompilowaną funkcją Lispu.

Jest związana z C-x C-e.

(eval-last-sexp EVAL-LAST-SEXP-ARG-INTERNAL)

Oceń sexp przed punktem; wyświetla wartość w obszarze ECHA. Interaktywnie, z argumentem przedrostka, wydrukuj wyjście do bieżącego bufora.

Normalnie funkcja ta obcina długie wyjście zgodnie z wartością zmiennych "EVAL-expression-print-length" oraz "EVAL-expression-print-level". Z argumentem przedrostka zera, nie ma jednak takiego okrojenia. Taki argument przedrostka również powoduje drukowanie liczb całkowitych w kilku dodatkowych formatach (ósemkowych, szesnastkowym i znakowym).

Jeśli 'EVAL-expression-debug-on-error' jest INNE niż nil, co jest domyślne, to polecenie porządkuje wszystkie błędy, aby wprowadzić debugger.

 1
Author: Xinyang Li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-08 08:44:26

Obok poleceń takich jak M-x EVAL-buffer lub m-x load-file możesz ponownie uruchomić nowy emacs z linii poleceń:

emacs -q --load "init.el"

Przykład użycia stackoverflow.com/questions/44959535/company-backends-in-gnu-emacs/

 1
Author: Picaud Vincent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-11 12:45:06

Możesz ustawić Wiązanie kluczy dla Emacsa w następujący sposób

;; reload emacs configuration
(defun reload-init-file ()
  (interactive)
  (load-file "~/.emacs"))

(global-set-key (kbd "C-c r") 'reload-init-file) 
Mam nadzieję, że to pomoże!
 0
Author: Vinh Trieu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 15:10:41

Jeśli przypadkiem masz otwartą powłokę wewnątrz Emacsa, możesz również zrobić:

. ~/.emacs

Może zapisać kilka kluczowych pociągnięć.

 -2
Author: benjaminz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 16:21:36