# HG changeset patch # User Richard M. Stallman # Date 867975216 0 # Node ID 45f27efe77c7270837d3e50f13a9882ccf3b5855 # Parent 717e09103d06f52a8e0c25e8f34871690fb87720 (desktop-clear-preserve-buffers): New variable. (desktop-clear): Kill all buffers except internal ones and those listed in desktop-clear-preserve-buffers. diff -r 717e09103d06 -r 45f27efe77c7 lisp/desktop.el --- a/lisp/desktop.el Fri Jul 04 00:11:24 1997 +0000 +++ b/lisp/desktop.el Fri Jul 04 00:13:36 1997 +0000 @@ -227,7 +227,16 @@ (if (consp here) (setcdr here nil)))) ;; ---------------------------------------------------------------------------- -(defun desktop-clear () "Empty the Desktop." +(defcustom desktop-clear-preserve-buffers + '("*scratch*" "*Messages*") + "*Buffer names that `desktop-clear' should not delete." + :type '(repeat string) + :group 'desktop) + +(defun desktop-clear () + "Empty the Desktop. +This kills all buffers except for internal ones +and those listed in `desktop-clear-preserve-buffers'." (interactive) (setq kill-ring nil kill-ring-yank-pointer nil @@ -235,8 +244,14 @@ search-ring-yank-pointer nil regexp-search-ring nil regexp-search-ring-yank-pointer nil) -;;; What a screw! -;;; (mapcar (function kill-buffer) (buffer-list)) + (let ((buffers (buffer-list))) + (while buffers + (or (member (buffer-name (car buffers)) desktop-clear-preserve-buffers) + ;; Don't kill buffers made for internal purposes. + (and (not (equal (buffer-name (car buffers)) "")) + (eq (aref (buffer-name (car buffers)) 0) ?\ )) + (kill-buffer (car buffers))) + (setq buffers (cdr buffers)))) (delete-other-windows)) ;; ---------------------------------------------------------------------------- (add-hook 'kill-emacs-hook 'desktop-kill)