如何计算Emacs中打开的缓冲区/文件的数量?

时间:2008-12-08 19:11:41

标签: emacs lisp

当我打算只打C-x或C-c时,我不小心碰到了Emacs中的C-x C-c。当然,这会关闭所有打开的帧和缓冲区而不进行确认。我知道我可以让Emacs提示“你确定要退出吗?”,但我不想一直这样做,这会让人讨厌。我只是希望它在打开超过N个文件(或缓冲区)时执行此操作。

所以我想把C-x C-c绑定到一个函数:

(if (< number of open buffers n)
    (save-buffers-kill-emacs)
    (are-you-sure))

但我无法弄清楚如何获取打开缓冲区的数量(或打开的帧数,或打开的文件数等)。

2 个答案:

答案 0 :(得分:9)

这就是我使用的:

(defun count-buffers (&optional display-anyway)
  "Display or return the number of buffers."
  (interactive)
  (let ((buf-count (length (buffer-list))))
    (if (or (interactive-p) display-anyway)
    (message "%d buffers in this Emacs" buf-count)) buf-count))

我偷了,但不记得从哪里。来自John Sturdy,听起来像一个迷人的家伙;它可以从his website获得。

答案 1 :(得分:4)

此外,您可以考虑使用桌面模式,它会在您再次启动Emacs时自动恢复缓冲区。只需添加

(desktop-save-mode 1)

.emacs。 请参阅GNU Emacs manualEmacswiki