Emacs 无法关闭,因为它无法保存自定义设置

Emacs 无法关闭,因为它无法保存自定义设置

调试器进入--Lisp 错误:(错误“无法保存自定义;初始化文件未完全加载”)信号(错误(“无法保存自定义;初始化文件未完全加载”))错误(“无法保存自定义;初始化文件未完全加载”)custom-save-all()
customize-save-variable(bmkp-last-as-first-bookmark-file“~\.emacs.d\bookmarks”)bookmark-save()
bookmark-exit-hook-internal()kill-emacs()
save-buffers-kill-emacs()handle-delete-frame((delete-frame(#)))

从有一天我在使用 emacs 时遇到了这个问题:由于上述错误消息,我无法结束它。

我该如何解决这个问题?

Windows 7 上的 Emacs 版本 GNU Emacs 24.3.1 (i386-mingw-nt6.1.7601)

我没有故意更改任何内容,也许这与 Windows 更新或我们网络结构的一些变化有关?.emacs 文件保存在我的主目录中,该目录存储在我的 Windows-7 用户配置文件中(因此以某种方式与我们的服务器同步)。

答案1

很抱歉给您添麻烦了。您遇到了书签+漏洞。

尝试评估此代码,重新定义该函数:

(defun bookmark-exit-hook-internal ()   ; This goes on `kill-emacs-hook'.
  "Save currently defined bookmarks and perhaps bookmark menu-list state.
Run `bookmark-exit-hook', then save bookmarks if they were updated.
Then save menu-list state to file `bmkp-bmenu-state-file', but only if
that option is non-nil."
  (run-hooks 'bookmark-exit-hook)
  (when (bookmark-time-to-save-p t)
    (condition-case err ; Do NOT raise error.  (Need to be able to exit.)
        (bookmark-save)
      (error (if (fboundp 'display-warning)
                 (display-warning 'bookmark-plus (error-message-string err))
               (message (error-message-string err))
               (sit-for 4))
             nil)))
  (bmkp-save-menu-list-state))

我已经更新了源文件bookmark+-1.el现在有了该定义。它应该可以解决问题 —— 也就是说,它应该向您显示错误消息,但让您退出 Emacs。

如果此更改不能解决问题,请通过电子邮件与我联系,我会修复它。

问题是书签+版本将bookmark-save选项的更新值保存bmkp-last-as-first-bookmark-file到您的自定义文件(或初始化文件),而这是不可能的,因为由于某种原因,您的初始化文件未成功加载。

再次对您造成的麻烦表示抱歉。 在进行上述任何操作之前为了退出 Emacs,复制你的书签文件,以确保安全。

除上述内容之外,您的 init 文件显然存在问题(~/.emacs)。@lawlist 在评论中提到了如何解决这个问题:分而治之,也就是递归地二分您的 init 文件以缩小问题的位置。

下次您看到“书签”或bmkp-书签如果您在回溯或错误消息中发现“前缀”,请尽快让我知道您的问题。;-)

相关内容