有时我手痒误删一些我本想隐藏起来的缓冲区。问题是,我使用tramp从多台机器上编辑文件,这些文件名又长又复杂,总之我不太擅长找到我需要的文件。因此,我希望emacs能跟踪我刚刚关闭的文件,以便我可以轻松地重新打开它们(最好通过ido提示方式)。
以下是我目前的尝试,但并未成功:
以下是我目前的尝试,但并未成功:
(defvar closed-files '())
(defun track-closed-file ()
(message buffer-file-name)
(and buffer-file-name
(cons buffer-file-name closed-files)))
(defun last-closed-files ()
(interactive)
(find-file (ido-completing-read "Last closed: " closed-files)))
(add-hook 'kill-buffer-hook 'track-closed-file)
我不太擅长elisp,在定义变量和添加单元格时可能会出错...
[我知道recentf
,但它只是跟踪已打开的文件,而不是已关闭的文件。]
and
和or
,但是你只需要when
。如果你将and
替换为when
,你可以省略or
。例如:(when buffer-file-name (message ...) (delete buffer-file-name ...) ...)
- Tylerbuffer-file-name
包含%
时,(message buffer-file-name)
会导致一个 bug。例如,尝试打开一个名为tmp%.txt
的文件,然后将其关闭。这个消息实际上并不是必要的,因此删除它应该没问题。 - Tyler