diff options
author | Richard M. Stallman <rms@gnu.org> | 1997-07-04 00:13:36 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1997-07-04 00:13:36 +0000 |
commit | f9be457422ea2d87f40142731d9a98701b82bf42 (patch) | |
tree | 8d7a660d7b1ce41080f6ba87fc642d1907948f31 /lisp/desktop.el | |
parent | 3443c832913b62b326c9e77515fda3c0d708b97f (diff) | |
download | emacs-f9be457422ea2d87f40142731d9a98701b82bf42.tar.gz |
(desktop-clear-preserve-buffers): New variable.
(desktop-clear): Kill all buffers except internal ones
and those listed in desktop-clear-preserve-buffers.
Diffstat (limited to 'lisp/desktop.el')
-rw-r--r-- | lisp/desktop.el | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/lisp/desktop.el b/lisp/desktop.el index cd44f47467c..864d9e5bf74 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -227,7 +227,16 @@ the like shorter." (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 @@ the like shorter." 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) |