# HG changeset patch # User michaels # Date 1038487097 0 # Node ID 68f6865bee47a0b79d6874648bb4b3001117c354 # Parent bcb5d65d0d9442e6e319d524daf3cf5047047a27 [xemacs-hg @ 2002-11-28 12:38:16 by michaels] 2002-11-26 Mike Sperber * window.el (shrink-window-if-larger-than-buffer): Elide braindead use of `save-window-excursion'. diff -r bcb5d65d0d94 -r 68f6865bee47 lisp/ChangeLog --- a/lisp/ChangeLog Thu Nov 28 12:34:44 2002 +0000 +++ b/lisp/ChangeLog Thu Nov 28 12:38:17 2002 +0000 @@ -1,3 +1,8 @@ +2002-11-26 Mike Sperber + + * window.el (shrink-window-if-larger-than-buffer): Elide braindead + use of `save-window-excursion'. + 2002-11-28 Mike Sperber * dialog.el (make-dialog-box): `set-frame-pixel-size' -> diff -r bcb5d65d0d94 -r 68f6865bee47 lisp/window.el --- a/lisp/window.el Thu Nov 28 12:34:44 2002 +0000 +++ b/lisp/window.el Thu Nov 28 12:38:17 2002 +0000 @@ -183,7 +183,6 @@ `(save-selected-window (select-window ,window) ,@body)) - (defun count-windows (&optional minibuf) "Return the number of visible windows. @@ -487,8 +486,7 @@ (or window (setq window (selected-window))) (save-excursion (set-buffer (window-buffer window)) - (let ((n 0) - (test-pos + (let ((test-pos (- (point-max) ;; If buffer ends with a newline, ignore it when counting ;; height unless point is after it. @@ -510,18 +508,12 @@ ;; The frame must not be minibuffer-only. (not (eq mini 'only))) (progn - (save-window-excursion - (goto-char (point-min)) - (while (and (window-live-p window) - (pos-visible-in-window-p test-pos window)) - (shrink-window 1 nil window) - (setq n (1+ n)))) - (if (> n 0) - (shrink-window (min (1- n) - (- (window-height window) - (1+ window-min-height))) - nil - window))))))) + (goto-char (point-min)) + (while (and (pos-visible-in-window-p test-pos window) + (> (window-height window) window-min-height)) + (shrink-window 1 nil window)) + (if (not (pos-visible-in-window-p test-pos window)) + (enlarge-window 1 nil window))))))) (defun kill-buffer-and-window () "Kill the current buffer and delete the selected window."