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