Function: kill-buffer-and-window
kill-buffer-and-window is an interactive and byte-compiled function
defined in window.el.gz.
Signature
(kill-buffer-and-window)
Documentation
Kill the current buffer and delete the selected window.
Probably introduced at or before Emacs version 20.1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/window.el.gz
(defun kill-buffer-and-window ()
"Kill the current buffer and delete the selected window."
(interactive)
(let ((window-to-delete (selected-window))
(buffer-to-kill (current-buffer))
(delete-window-hook (lambda () (ignore-errors (delete-window)))))
(unwind-protect
(progn
(add-hook 'kill-buffer-hook delete-window-hook t t)
(if (kill-buffer (current-buffer))
;; If `delete-window' failed before, we rerun it to regenerate
;; the error so it can be seen in the echo area.
(when (eq (selected-window) window-to-delete)
(delete-window))))
;; If the buffer is not dead for some reason (probably because
;; of a `quit' signal), remove the hook again.
(ignore-errors
(with-current-buffer buffer-to-kill
(remove-hook 'kill-buffer-hook delete-window-hook t))))))