2008-12-08 5 views
9

Ab und zu treffe ich versehentlich C-x C-c in Emacs, wenn ich nur C-x oder C-c treffen will. Dies schließt natürlich alle offenen Rahmen und Puffer ohne Bestätigung. Ich weiß, dass ich Emacs fragen kann "Bist du sicher, dass du gehen willst?", Aber ich will das nicht immer machen, was ärgerlich werden würde. Ich möchte es nur tun, wenn mehr als N Dateien (oder Puffer) geöffnet sind.Wie zähle ich die Anzahl der geöffneten Puffer/Dateien in Emacs?

So würde Ich mag Cx Cc entlang der Linien an eine Funktion binden, von:

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

Aber ich kann nicht herausfinden, wie die Anzahl der offenen Puffer zu erhalten (oder die Anzahl der offenen Rahmen oder die Anzahl der geöffneten Dateien usw.). Diese

Antwort

9

ist das, was ich benutze:

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

ich stahl es , aber kann mich nicht erinnern, von wo aus. von John Sturdy, der klingt wie ein faszinierender Kerl; es ist verfügbar von his website.

4

Sie können auch den Desktop-Modus verwenden, der Ihre Puffer automatisch wiederherstellt, wenn Sie Emacs erneut starten. Fügen Sie einfach

(desktop-save-mode 1) 

zu Ihrem .emacs hinzu. Siehe GNU Emacs manual oder Emacswiki.