From: Sam Steingold Date: Sun, 3 Jun 2007 18:51:42 +0000 (+0000) Subject: New command kill-matching-buffers kills buffers whose name matches a regexp. X-Git-Tag: emacs-pretest-23.0.90~12505 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a151f82c4396c7ad8de905ff97c52ff0405d2f8b;p=emacs.git New command kill-matching-buffers kills buffers whose name matches a regexp. --- diff --git a/etc/NEWS b/etc/NEWS index 50f4daf796c..0c2846bf5b9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -28,6 +28,8 @@ with a prefix argument or by typing C-u C-h C-n. * Editing Changes in Emacs 23.1 +** New command kill-matching-buffers kills buffers whose name matches a regexp. + * New Modes and Packages in Emacs 23.1 diff --git a/lisp/ChangeLog b/lisp/ChangeLog index baf1400232d..3d3bf598a78 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2007-06-03 Sam Steingold + + * files.el (kill-buffer-ask): New function. + (kill-some-buffers): Use it. + (kill-matching-buffers): New user command. + 2007-06-01 David Kastrup * dired.el (dired-recursive-deletes, dired-recursive-copies): diff --git a/lisp/files.el b/lisp/files.el index 9ce1f0a0471..fc8256ba36e 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -4389,6 +4389,14 @@ This command is used in the special Dired buffer created by (message "No files can be recovered from this session now"))) (kill-buffer buffer)))) +(defun kill-buffer-ask (buffer) + "Kill buffer if confirmed." + (when (yes-or-no-p + (format "Buffer %s %s. Kill? " (buffer-name buffer) + (if (buffer-modified-p buffer) + "HAS BEEN EDITED" "is unmodified"))) + (kill-buffer buffer))) + (defun kill-some-buffers (&optional list) "Kill some buffers. Asks the user whether to kill each one of them. Non-interactively, if optional argument LIST is non-nil, it @@ -4403,13 +4411,20 @@ specifies the list of buffers to kill, asking for approval for each one." ; if we killed the base buffer. (not (string-equal name "")) (/= (aref name 0) ?\s) - (yes-or-no-p - (format "Buffer %s %s. Kill? " - name - (if (buffer-modified-p buffer) - "HAS BEEN EDITED" "is unmodified"))) - (kill-buffer buffer))) + (kill-buffer-ask buffer))) (setq list (cdr list)))) + +(defun kill-matching-buffers (regexp &optional internal-too) + "Kill buffers whose name matches the specified regexp. +The optional second argument indicates whether to kill internal buffers too." + (interactive "sKill buffers matching this regular expression: \nP") + (dolist (buffer (buffer-list)) + (let ((name (buffer-name buffer))) + (when (and name (not (string-equal name "")) + (or internal-too (/= (aref name 0) ?\s)) + (string-match regexp name)) + (kill-buffer-ask buffer))))) + (defun auto-save-mode (arg) "Toggle auto-saving of contents of current buffer.