Mercurial > emacs
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. |