aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman1997-07-04 00:13:36 +0000
committerRichard M. Stallman1997-07-04 00:13:36 +0000
commitf9be457422ea2d87f40142731d9a98701b82bf42 (patch)
tree8d7a660d7b1ce41080f6ba87fc642d1907948f31
parent3443c832913b62b326c9e77515fda3c0d708b97f (diff)
downloademacs-f9be457422ea2d87f40142731d9a98701b82bf42.tar.gz
emacs-f9be457422ea2d87f40142731d9a98701b82bf42.zip
(desktop-clear-preserve-buffers): New variable.
(desktop-clear): Kill all buffers except internal ones and those listed in desktop-clear-preserve-buffers.
-rw-r--r--lisp/desktop.el21
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."
227 (if (consp here) 227 (if (consp here)
228 (setcdr here nil)))) 228 (setcdr here nil))))
229;; ---------------------------------------------------------------------------- 229;; ----------------------------------------------------------------------------
230(defun desktop-clear () "Empty the Desktop." 230(defcustom desktop-clear-preserve-buffers
231 '("*scratch*" "*Messages*")
232 "*Buffer names that `desktop-clear' should not delete."
233 :type '(repeat string)
234 :group 'desktop)
235
236(defun desktop-clear ()
237 "Empty the Desktop.
238This kills all buffers except for internal ones
239and those listed in `desktop-clear-preserve-buffers'."
231 (interactive) 240 (interactive)
232 (setq kill-ring nil 241 (setq kill-ring nil
233 kill-ring-yank-pointer nil 242 kill-ring-yank-pointer nil
@@ -235,8 +244,14 @@ the like shorter."
235 search-ring-yank-pointer nil 244 search-ring-yank-pointer nil
236 regexp-search-ring nil 245 regexp-search-ring nil
237 regexp-search-ring-yank-pointer nil) 246 regexp-search-ring-yank-pointer nil)
238;;; What a screw! 247 (let ((buffers (buffer-list)))
239;;; (mapcar (function kill-buffer) (buffer-list)) 248 (while buffers
249 (or (member (buffer-name (car buffers)) desktop-clear-preserve-buffers)
250 ;; Don't kill buffers made for internal purposes.
251 (and (not (equal (buffer-name (car buffers)) ""))
252 (eq (aref (buffer-name (car buffers)) 0) ?\ ))
253 (kill-buffer (car buffers)))
254 (setq buffers (cdr buffers))))
240 (delete-other-windows)) 255 (delete-other-windows))
241;; ---------------------------------------------------------------------------- 256;; ----------------------------------------------------------------------------
242(add-hook 'kill-emacs-hook 'desktop-kill) 257(add-hook 'kill-emacs-hook 'desktop-kill)