重置定义并重新加载.emacs而不关闭,或重新启动Emacs并重新打开缓冲区

Ame*_*ina 19 emacs

据我了解,以下命令序列

M-x load-file ENTER
~/.emacs
ENTER
Run Code Online (Sandbox Code Playgroud)

会重新加载我的.emacs文件.但是,根据我在其他论坛上阅读的内容,他们无法保证给我一个完全修改的配置,即他们会强制Emacs解析新配置文件并重新加载修改后的变量和函数定义,但是他们不会删除以前加载的定义.

有了这个,我的问题是:

  1. 是否有可能在内存中清除Emacs的定义并重新加载.emacs而无需完全重启Emacs?
  2. 如果以上是不可能的,有没有办法重新启动Emacs(以便我.emacs从头解析我的文件)要求它重新打开我打开的所有缓冲区?

Mic*_*man 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将此行为作为默认行为.)


phi*_*ils 5

这个问题是重复的,但是因为它有一个可以接受的答案,所以我将重复我对桌面库的评论,即它在存储的每个缓冲区中存储了一定数量的状态(模式和局部变量),然后还原重新加载这些文件时的状态相同

当然,对于您而言,这正是您希望发生的事情。

有关恢复(重新加载)所有缓冲区的简单方法,请参见为所有活动缓冲区重新加载.emacs

结合这两种方法,可以让您重新启动Emacs,并通过Desktop恢复文件,这时您可以还原所有文件。