diff options
| author | Richard M. Stallman | 1997-07-04 00:13:36 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1997-07-04 00:13:36 +0000 |
| commit | f9be457422ea2d87f40142731d9a98701b82bf42 (patch) | |
| tree | 8d7a660d7b1ce41080f6ba87fc642d1907948f31 | |
| parent | 3443c832913b62b326c9e77515fda3c0d708b97f (diff) | |
| download | emacs-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.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." | |||
| 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. | ||
| 238 | This kills all buffers except for internal ones | ||
| 239 | and 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) |