comparison lisp/window.el @ 21118:2aa0dc203036

(quit-window): New command. (shrink-window-if-larger-than-buffer): Bind text-height in the let*. (view-return-to-alist): Add defvar.
author Richard M. Stallman <rms@gnu.org>
date Mon, 09 Mar 1998 00:37:11 +0000
parents 6b5e726667e7
children 58d299618042
comparison
equal deleted inserted replaced
21117:a88d2c555a06 21118:2aa0dc203036
196 (progn 196 (progn
197 (set-window-point new-w old-point) 197 (set-window-point new-w old-point)
198 (select-window new-w))))) 198 (select-window new-w)))))
199 (split-window-save-restore-data new-w old-w))) 199 (split-window-save-restore-data new-w old-w)))
200 200
201 ;; This is to avoid compiler warnings.
202 (defvar view-return-to-alist)
203
201 (defun split-window-save-restore-data (new-w old-w) 204 (defun split-window-save-restore-data (new-w old-w)
202 (save-excursion 205 (save-excursion
203 (set-buffer (window-buffer)) 206 (set-buffer (window-buffer))
204 (if view-mode 207 (if view-mode
205 (let ((old-info (assq old-w view-return-to-alist))) 208 (let ((old-info (assq old-w view-return-to-alist)))
244 ;; unless point is after it. 247 ;; unless point is after it.
245 (and (not (eobp)) 248 (and (not (eobp))
246 (eq ?\n (char-after (1- (point-max)))))) 249 (eq ?\n (char-after (1- (point-max))))))
247 (params (frame-parameters (window-frame window))) 250 (params (frame-parameters (window-frame window)))
248 (mini (cdr (assq 'minibuffer params))) 251 (mini (cdr (assq 'minibuffer params)))
249 (edges (window-edges (selected-window)))) 252 (edges (window-edges (selected-window)))
253 text-height)
250 (if (and (< 1 (save-selected-window 254 (if (and (< 1 (save-selected-window
251 (select-window window) 255 (select-window window)
252 (count-windows))) 256 (count-windows)))
253 (= (window-width window) (frame-width (window-frame window))) 257 (= (window-width window) (frame-width (window-frame window)))
254 (pos-visible-in-window-p (point-min) window) 258 (pos-visible-in-window-p (point-min) window)
285 (let ((buffer (current-buffer))) 289 (let ((buffer (current-buffer)))
286 (delete-window (selected-window)) 290 (delete-window (selected-window))
287 (kill-buffer buffer)) 291 (kill-buffer buffer))
288 (error "Aborted"))) 292 (error "Aborted")))
289 293
294 (defun quit-window (&optional kill window)
295 "Quit the current buffer. Bury it, and maybe delete the selected frame.
296 \(The frame is deleted if it is contains a dedicated window for the buffer.)
297 With a prefix argument, kill the buffer instead.
298
299 Noninteractively, if KILL is non-nil, then kill the current buffer,
300 otherwise bury it.
301
302 If WINDOW is non-nil, it specifies a window; we delete that window,
303 and the buffer that is killed or buried is the one in that window."
304 (interactive "P")
305 (let ((buffer (window-buffer window))
306 (frame (if window (window-frame window) (selected-window)))
307 (window-solitary
308 (save-selected-window
309 (if window
310 (select-window window))
311 (one-window-p t)))
312 window-handled)
313
314 (save-selected-window
315 (if window
316 (select-window window))
317 (switch-to-buffer (other-buffer)))
318
319 ;; Get rid of the frame, if it has just one dedicated window
320 ;; and other visible frames exist.
321 (and (window-dedicated-p window)
322 (delq frame (visible-frame-list))
323 window-solitary
324 (if (and (eq default-minibuffer-frame frame)
325 (= 1 (length (minibuffer-frame-list))))
326 (setq window nil)
327 (delete-frame frame)
328 (setq window-handled t)))
329
330 ;; Deal with the buffer.
331 (if kill
332 (kill-buffer buffer)
333 (bury-buffer buffer))
334
335 ;; Maybe get rid of the window.
336 (and window (not window-handled) (not window-solitary)
337 (delete-window window))))
338
290 (define-key ctl-x-map "2" 'split-window-vertically) 339 (define-key ctl-x-map "2" 'split-window-vertically)
291 (define-key ctl-x-map "3" 'split-window-horizontally) 340 (define-key ctl-x-map "3" 'split-window-horizontally)
292 (define-key ctl-x-map "}" 'enlarge-window-horizontally) 341 (define-key ctl-x-map "}" 'enlarge-window-horizontally)
293 (define-key ctl-x-map "{" 'shrink-window-horizontally) 342 (define-key ctl-x-map "{" 'shrink-window-horizontally)
294 (define-key ctl-x-map "-" 'shrink-window-if-larger-than-buffer) 343 (define-key ctl-x-map "-" 'shrink-window-if-larger-than-buffer)