From: Deniz Dogan Date: Wed, 11 Apr 2012 14:22:36 +0000 (+0200) Subject: Kill channel buffers when killing rcirc server buffers X-Git-Tag: emacs-24.2.90~471^2~364^2~30 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=a63067fcfe742d5c16eb53cf1a603e23c37b0a3a;p=emacs.git Kill channel buffers when killing rcirc server buffers * net/rcirc.el (rcirc-kill-channel-buffers): New variable. (rcirc-kill-buffer-hook): Use it to kill channel buffers. Fixes: debbugs:5128 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e77cb1c8200..cde2c91be3d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-04-11 Deniz Dogan + + * net/rcirc.el (rcirc-kill-channel-buffers): New variable. + (rcirc-kill-buffer-hook): Use it to kill channel buffers (bug#5128). + 2012-04-11 William Stevenson * textmodes/artist.el (artist-mode): Convert artist-mode to use diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 9d7e8664542..be4dee5d265 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -361,6 +361,14 @@ of a line. The string is passed as the first argument to :type 'string :group 'rcirc) +(defcustom rcirc-kill-channel-buffers nil + "When non-nil, kill channel buffers when the server buffer is killed. +Only the channel buffers associated with the server in question +will be killed." + :version "24.2" + :type 'boolean + :group 'rcirc) + (defvar rcirc-nick nil) (defvar rcirc-prompt-start-marker nil) @@ -1088,12 +1096,20 @@ Logfiles are kept in `rcirc-log-directory'." :group 'rcirc) (defun rcirc-kill-buffer-hook () - "Part the channel when killing an rcirc buffer." + "Part the channel when killing an rcirc buffer. + +If `rcirc-kill-channel-buffers' is non-nil and the killed buffer +is a server buffer, kills all of the channel buffers associated +with it." (when (eq major-mode 'rcirc-mode) (when (and rcirc-log-flag rcirc-log-directory) (rcirc-log-write)) - (rcirc-clean-up-buffer "Killed buffer"))) + (rcirc-clean-up-buffer "Killed buffer") + (when (and rcirc-buffer-alist ;; it's a server buffer + rcirc-kill-channel-buffers) + (dolist (channel rcirc-buffer-alist) + (kill-buffer (cdr channel)))))) (defun rcirc-change-major-mode-hook () "Part the channel when changing the major-mode."