Emacs中是否有一个undo-close-buffer插件

时间:2015-03-08 20:03:09

标签: emacs buffer undo

就像在firefox中我们可以恢复关闭的选项卡(Emacs案例中的缓冲区)。似乎写一篇文章不应该太难,但在重新发明轮子之前,有没有人写过的好文章,快速谷歌搜索没有返回令人满意的结果。

2 个答案:

答案 0 :(得分:1)

我不知道现有的此类功能。但你可以编写一个代码,例如,建议kill-buffer

有一个类似于delete-by-moving-to-trash的布尔选项。在杀死缓冲区之前,请保存其相关信息(用于重新创建)以供以后检索。如果你想允许一次撤消多个缓冲区(例如不仅仅是最后一个被杀死的缓冲区),那么将保存的信息放在alist等上。

然而保存恢复所需的信息不明显 - 它取决于特定的缓冲区(至少它的模式,但甚至可能是其历史/状态的其他部分)。

因此,在一般情况下,这是有问题的。你可能会为某些用例提出可行且有用的东西,但请注意,可能没有一个好的一般答案。

答案 1 :(得分:0)

它并不完全是您所描述的内容,但 recentf 包会让您重新打开最近的文件。它是Emacs的一部分,所以没有可以安装的软件包。将其添加到您的init文件

(require 'recentf)
(recentf 1)
(global-set-key (kbd "C-x R") 'recentf-open-files)

然后如果您关闭文件,可以点击C-x R查看最近打开的文件列表以供选择。

文件列表也会保留到recentf-save-file


唯一的问题是它没有将最后关闭的文件移动到列表的顶部 - 如果它确实可以调用recentf-open-most-recent-file-1来打开该文件,为您提供撤消关闭文件功能。

这可能是在此功能中将文件移动到列表前面的问题 -

(defun recentf-track-closed-file ()
  "Update the recent list when a buffer is killed.
That is, remove a non kept file from the recent list."
  (and buffer-file-name
       (recentf-remove-if-non-kept buffer-file-name)))