Сбросить определения и перезагрузить .emacs без закрытия или перезапустить Emacs и повторно открыть буферы

18

Насколько я понимаю, следующая последовательность команд

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

перезагрузит файл .emacs . Однако из того, что я прочитал на других форумах, они не гарантируют, что я дам полностью переработанную конфигурацию, то есть они заставят Emacs разобрать новый файл конфигурации и перезагрузить измененные определения переменных и функций, но они не будут удалять ранее загруженные определения ,

С этим мои вопросы:

  1. Можно ли очистить определения Emacs в памяти и повторно загрузить .emacs без необходимости полностью перезапускать Emacs?
  2. Если вышеуказанное невозможно, существует ли способ перезапустить Emacs (чтобы я разбирал свой файл .emacs с нуля), прося его повторно открыть все буферы, которые у меня открыты?
задан Amelio Vazquez-Reina 04.10.2011 в 22:31
источник
  • +1, чтобы противостоять (странному) downvote ... что не так с этим вопросом? –  Dervin Thunk 04.10.2011 в 22:45
  • Почему вы пытаетесь перезагрузить весь файл? Части файла, который, как вы знаете, изменились, могут быть повторно запущены с помощью eval-region –  Andrew Cox 04.10.2011 в 23:03
  • Предположим, что у вас есть (setq config-var t) для некоторой переменной, значение по умолчанию которой равно nil. Если вы удалите эту строку из файла, вы не сможете воспроизвести поведение по умолчанию, перезагрузив только ту часть файла (которая теперь пуста) или даже весь файл. Вы должны следить за каждым изменением, которое вы совершаете, и отменить его каким-то образом, что чревато опасностью и может даже не быть возможным. –  Michael Hoffman 04.10.2011 в 23:21
  • возможный дубликат Reload .emacs для всех активных буферов –  phils 04.10.2011 в 23:58

2 ответа

11

Отменить все, что могло быть сделано в вашем .emacs , невозможно.

Вы можете сохранить и восстановить сеанс emacs с desktop . Закройте M-x desktop-save RET C-x C-c , а затем восстановите emacs -f desktop-read .

См. (info "(emacs) Saving Emacs Sessions") для получения дополнительной информации. (Вы также можете customize desktop-save-mode , чтобы это значение было по умолчанию.)

    
ответ дан Michael Hoffman 04.10.2011 в 23:00
  • См. также porkmail.org/elisp/recover-buffers, который позволяет вам повторно просматривать все буферы, которые вы открывали, когда Emacs ушел или разбился. Раскрытие информации: Я написал это. –  tripleee 15.10.2011 в 13:43
4

Этот вопрос является дубликатом, но поскольку он имеет принятый ответ, я повторю свои комментарии о библиотеке Desktop, которая заключается в том, что он хранит определенное количество состояний (режимы и локальные переменные) с каждым сохраненным им буфером и он затем восстанавливает это же состояние при перезагрузке этих файлов.

В вашем случае, конечно, это именно то, чего вы не хотите .

См. Обновить .emac для всех активных буферов для простой способ вернуть (перезагрузить) все буферы.

Объединение двух подходов позволит вам перезапустить Emacs с восстановлением файлов Desktop, после чего вы сможете вернуть все файлы.

    
ответ дан phils 05.10.2011 в 00:08