comparison lisp/window.el @ 90645:7eeafaaa9eab

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 476-489) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 153-160) - Merge from emacs--devo--0 - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-127
author Miles Bader <miles@gnu.org>
date Mon, 30 Oct 2006 08:54:41 +0000
parents a1a25ac6c88a 7c85e65e0464
children 02cf29720f31
comparison
equal deleted inserted replaced
90644:9b62e05dedf6 90645:7eeafaaa9eab
717 717
718 (defun kill-buffer-and-window () 718 (defun kill-buffer-and-window ()
719 "Kill the current buffer and delete the selected window." 719 "Kill the current buffer and delete the selected window."
720 (interactive) 720 (interactive)
721 (let ((window-to-delete (selected-window)) 721 (let ((window-to-delete (selected-window))
722 (buffer-to-kill (current-buffer))
722 (delete-window-hook (lambda () 723 (delete-window-hook (lambda ()
723 (condition-case nil 724 (condition-case nil
724 (delete-window) 725 (delete-window)
725 (error nil))))) 726 (error nil)))))
726 (add-hook 'kill-buffer-hook delete-window-hook t t) 727 (unwind-protect
727 (if (kill-buffer (current-buffer)) 728 (progn
728 ;; If `delete-window' failed before, we rerun it to regenerate 729 (add-hook 'kill-buffer-hook delete-window-hook t t)
729 ;; the error so it can be seen in the minibuffer. 730 (if (kill-buffer (current-buffer))
730 (when (eq (selected-window) window-to-delete) 731 ;; If `delete-window' failed before, we rerun it to regenerate
731 (delete-window)) 732 ;; the error so it can be seen in the echo area.
732 (remove-hook 'kill-buffer-hook delete-window-hook t)))) 733 (when (eq (selected-window) window-to-delete)
734 (delete-window))))
735 ;; If the buffer is not dead for some reason (probably because
736 ;; of a `quit' signal), remove the hook again.
737 (condition-case nil
738 (with-current-buffer buffer-to-kill
739 (remove-hook 'kill-buffer-hook delete-window-hook t))
740 (error nil)))))
733 741
734 (defun quit-window (&optional kill window) 742 (defun quit-window (&optional kill window)
735 "Quit the current buffer. Bury it, and maybe delete the selected frame. 743 "Quit the current buffer. Bury it, and maybe delete the selected frame.
736 \(The frame is deleted if it contains a dedicated window for the buffer.) 744 \(The frame is deleted if it contains a dedicated window for the buffer.)
737 With a prefix argument, kill the buffer instead. 745 With a prefix argument, kill the buffer instead.