9

时不时地,当我打算按 Cx 或 Cc 时,我不小心在 Emacs 中按了 Cx Cc。当然,这会在没有确认的情况下关闭所有打开的帧和缓冲区。我知道我可以让 Emacs 提示“你确定要退出吗?”,但我不想一直这样做,这会很烦人。我只是希望它在打开超过 N 个文件(或缓冲区)时执行此操作。

所以我想将 Cx Cc 绑定到一个函数,如下所示:

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

但我不知道如何获取打开缓冲区的数量(或打开的帧数,或打开的文件数等)。

4

2 回答 2

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),他听起来像个迷人的家伙;可从他的网站获得。

于 2008-12-08T19:40:23.910 回答
4

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

(desktop-save-mode 1)

到你的.emacs. 请参阅GNU Emacs 手册Emacswiki

于 2008-12-08T21:08:12.280 回答