Как подсчитать количество открытых буферов / файлов в Emacs? - PullRequest
9 голосов
/ 08 декабря 2008

Время от времени я случайно нажимаю 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 ]

9 голосов
/ 08 декабря 2008

Вот что я использую:

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

Я украл его , но не могу вспомнить, откуда . из Джона Стерди , который звучит как очаровательный парень; он доступен на его веб-сайте .

4 голосов
/ 09 декабря 2008

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

(desktop-save-mode 1)

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

...