由于缓冲区"ido.last",emacs无法关闭

10
当我尝试关闭emacs时,会出现以下信息:

"buffer ido.last modified; kill anyway?"

无论我如何回答,emacs都不会关闭。但我无法打开这个缓冲区,而且ido.last文件也不存在。我该如何关闭emacs呢?

这可能是相关的:http://old.nabble.com/ido-insists-on-trying-to-save-ido.last-td11497631.html - phils
4个回答

6

如果您以另一个用户身份(例如root)使用emacs,则可能会发现.ido.last文件归属于root,因此您无法删除或保存它。

当您看到“buffer .ido.last modified”的提示时,只需在回答“yes”之前删除.ido.last文件即可(如果您在shell中使用emacs,则只需使用C-z暂停,删除文件,然后使用%继续)。然后,.ido.last文件将被写入磁盘,并由您拥有。


在我的情况下,有一个由root拥有的~/.ido.last文件。删除它可以永久解决问题。 - CPBL

4
IDO试图将名为ido.last的文件保存到~/.emacs.d目录中。但是,在您的情况下,IDO似乎无法这样做。也许您的~/.emacs.d目录由于某种原因是只读的,或者您的磁盘已满等。因此,IDO会引发错误,防止您的emacs关闭。
如果您不使用IDO,请尝试从您的.emacs中删除这些行:
(require 'ido)
(ido-mode t)

2
感谢您的帮助。我找到了那些行,并在它们下面找到了一行<< ido-save-directory-list-file "~/.emacs.d/cache/ido.last" >>。虽然我没有真正的线索,但我认为这意味着 ido.last 应该保存到这个不存在的“cache”目录中。我去掉了“/cache”,从那以后问题就没有再出现 :) - ploppy

2

将以下代码添加到您的.emacs.elinit.el等文件中,以解决ido在ido.last文件不可写时防止emacs退出的问题:

(defun ido-kill-emacs-hook ()
      (ignore-errors (ido-save-history)))

0

就像Jérôme Radix所说,当IDO无法保存ido.last文件时,会出现该错误,并且该错误会阻止emacs关闭。

IDO保存文件的默认位置是~/.emacs.d目录,但是可以通过设置变量ido-save-directory-list-file来覆盖此位置。这意味着您应该检查此变量的值(例如,M-x describe-variable)以查看IDO尝试保存文件的位置,并找出为什么无法保存文件的原因。

可能的原因包括:

  1. 目录或文件是只读的。
  2. 目录不存在。IDO不会为您创建目录。
  3. 目录或文件归另一个用户所有。
  4. 磁盘已满。

不幸的是,这个问题仍然存在,偶尔还有其他(未知)原因。 - NetMage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接