2008-12-08 2 views
9

Время от времени я случайно ударяю C-x C-c в Emacs, когда намереваюсь просто нажать C-x или C-c. Это, конечно, закрывает все открытые кадры и буферы без подтверждения. Я знаю, что могу сделать Emacs приглашением «Вы уверены, что хотите выйти?», Но я не хочу делать это все время, что будет раздражать. Я просто хочу, чтобы это было сделано, когда открыто более N файлов (или буферов).Как подсчитать количество открытых буферов/файлов в Emacs?

Так что я хотел бы связать Cx Cc для функции вдоль линий:

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

Но я не могу понять, как получить количество открытых буферов (или количество открытых рамок , или количество открытых файлов и т. д.).

ответ

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.

4

Кроме того, вы можете использовать режим рабочего стола, который будет автоматически восстанавливать ваши буферы при повторном запуске Emacs. Просто добавьте

(desktop-save-mode 1) 

к вашему .emacs. См. GNU Emacs manual или Emacswiki.