Commit 3d2f23d9 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(quit-window): New command.

(shrink-window-if-larger-than-buffer):
Bind text-height in the let*.
(view-return-to-alist): Add defvar.
parent ab228c24
......@@ -198,6 +198,9 @@ new mode line."
(select-window new-w)))))
(split-window-save-restore-data new-w old-w)))
;; This is to avoid compiler warnings.
(defvar view-return-to-alist)
(defun split-window-save-restore-data (new-w old-w)
(save-excursion
(set-buffer (window-buffer))
......@@ -246,7 +249,8 @@ or if the window is the only window of its frame."
(eq ?\n (char-after (1- (point-max))))))
(params (frame-parameters (window-frame window)))
(mini (cdr (assq 'minibuffer params)))
(edges (window-edges (selected-window))))
(edges (window-edges (selected-window)))
text-height)
(if (and (< 1 (save-selected-window
(select-window window)
(count-windows)))
......@@ -287,6 +291,51 @@ or if the window is the only window of its frame."
(kill-buffer buffer))
(error "Aborted")))
(defun quit-window (&optional kill window)
"Quit the current buffer. Bury it, and maybe delete the selected frame.
\(The frame is deleted if it is contains a dedicated window for the buffer.)
With a prefix argument, kill the buffer instead.
Noninteractively, if KILL is non-nil, then kill the current buffer,
otherwise bury it.
If WINDOW is non-nil, it specifies a window; we delete that window,
and the buffer that is killed or buried is the one in that window."
(interactive "P")
(let ((buffer (window-buffer window))
(frame (if window (window-frame window) (selected-window)))
(window-solitary
(save-selected-window
(if window
(select-window window))
(one-window-p t)))
window-handled)
(save-selected-window
(if window
(select-window window))
(switch-to-buffer (other-buffer)))
;; Get rid of the frame, if it has just one dedicated window
;; and other visible frames exist.
(and (window-dedicated-p window)
(delq frame (visible-frame-list))
window-solitary
(if (and (eq default-minibuffer-frame frame)
(= 1 (length (minibuffer-frame-list))))
(setq window nil)
(delete-frame frame)
(setq window-handled t)))
;; Deal with the buffer.
(if kill
(kill-buffer buffer)
(bury-buffer buffer))
;; Maybe get rid of the window.
(and window (not window-handled) (not window-solitary)
(delete-window window))))
(define-key ctl-x-map "2" 'split-window-vertically)
(define-key ctl-x-map "3" 'split-window-horizontally)
(define-key ctl-x-map "}" 'enlarge-window-horizontally)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment