我使用 Emacs 桌面模块来保存会话之间的打开缓冲区。但是我发现这积累了比我想要的更多的缓冲区,所以我写了一个小函数来清理缓冲区列表,然后再保存到桌面文件。这按预期工作,但由于奇怪的原因,.emacs.desktop 偶尔会被打乱,即它在开始时包含另一个缓冲区的一部分,然后是预期的内容,然后是另一个缓冲区的结果。我不知道为什么会发生这种情况。这是我的 .emacs 文件的摘录:
(defun kill-old-buffers ()
"Kill buffers from end of buffer list (not used recently) until no more than 50 buffers are left. Remove temporary buffers first"
(interactive)
(let* (desktop-buffer (current-buffer))
(dolist (buffer (buffer-list))
(if (or (string-match "^\*" (buffer-name buffer)) (string-match "\.hpp$" (buffer-name buffer)))
(kill-buffer buffer)
)
)
(setq all-buffers (reverse (buffer-list)))
(while (> (safe-length all-buffers) 50)
(setq buffer (pop all-buffers))
(if (not (string-equal (buffer-name buffer) (buffer-name (current-buffer))))
(kill-buffer buffer)
)
)
(switch-to-buffer desktop-buffer)
))
;; Kill old rarely-used buffers before saving
(add-hook 'desktop-save-hook
'(lambda () (kill-old-buffers)))
任何帮助,将不胜感激。