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

如何计算Emacs中打开的缓冲区/文件的数量?,emacs,lisp,Emacs,Lisp,偶尔,当我打算在Emacs中点击C-x或C-C时,我会意外地点击C-x或C-C。当然,这会在没有确认的情况下关闭所有打开的帧和缓冲区。我知道我可以让Emacs提示“您确定要退出吗?”,但我不想一直这样做,这会让人恼火。我只希望它在打开超过N个文件(或缓冲区)时执行此操作 因此,我想将C-x C-C绑定到一个函数,如下所示: (if (< number of open buffers n) (save-buffers-kill-emacs) (are-you-sure))

偶尔,当我打算在Emacs中点击C-x或C-C时,我会意外地点击C-x或C-C。当然,这会在没有确认的情况下关闭所有打开的帧和缓冲区。我知道我可以让Emacs提示“您确定要退出吗?”,但我不想一直这样做,这会让人恼火。我只希望它在打开超过N个文件(或缓冲区)时执行此操作

因此,我想将C-x C-C绑定到一个函数,如下所示:

(if (< number of open buffers n)
    (save-buffers-kill-emacs)
    (are-you-sure))
(如果(
但是我不知道如何获得打开的缓冲区的数量(或打开的帧的数量,或打开的文件的数量,等等)。

这就是我使用的:

(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))

我偷了,但不记得从哪里偷的。听上去像个迷人的家伙;可以从.

获得,也可以考虑使用桌面模式,当您再次启动Emacs时,它将自动恢复缓冲区。加上

(desktop-save-mode 1)
到您的
.emacs
。 看到或看到