Как я могу заставить Emacs перезагружать все мои определения, в которых я обновил .emacs
не перезапуская Emacs?
Вы можете использовать команду load-file ( Mx load-file
, затем дважды нажмите return, чтобы принять имя файла по умолчанию , который является текущим редактируемым файлом).
Вы также можете просто переместить точку в конец любого sexp и нажать C-x C-e , чтобы выполнить только этот sexp. Обычно нет необходимости перезагружать весь файл, если вы просто меняете одну или две строки.
Другие уже ответили на ваш вопрос, но я обнаружил, что обычно хочу выполнить строки, которые я только что написал. для этого CtrlAltx в лиспе работает просто отлично.
Если у вас открыт файл .emacs в активном в данный момент буфере:
M-x eval-buffer
Я предлагаю вам не делать этого вначале. Вместо этого запустите новую сессию emacs и проверьте все изменения, которые вы сделали, чтобы убедиться, что они работают правильно. Это делается для того, чтобы не оставить вас в состоянии, когда у вас есть неработоспособный файл .emacs, который не загружается или загружается неправильно. Если вы делаете все свои правки в исходной сессии, а все тестирование - в новой сессии, у вас всегда будет что-то надежное для комментирования неработающего кода.
Когда вы, наконец, будете довольны своими изменениями, тогда продолжайте использовать один из других ответов для повторной загрузки. Я лично предпочитаю eval
только ту часть, которую вы добавили/изменили, и для этого просто выделите область добавленного/измененного кода и вызовите M-x eval-region
. Это минимизирует код, который оценивается, минимизируя любые непреднамеренные побочные эффекты, как отмечает luapyad.
Обычно вы можете просто повторно оценить измененный регион. Отметьте область ~ / .emacs, которую вы изменили, а затем используйте M-x eval-region RET
. Часто это безопаснее, чем повторная оценка всего файла, поскольку легко написать файл .emacs, который не работает сразу после двойной загрузки.