# HG changeset patch # User Richard M. Stallman # Date 744080928 0 # Node ID 69e5c2373d373d0d69736b1c9979dd6ec4dba6be # Parent f593b231193f3fc201906a467bc9dfd693483c66 (shrink-window-if-larger-than-buffer): Do nothing if the window is the only window of its frame. If the buffer ends in newline and point is not at the end of the buffer, don't display last (empty) line. diff -r f593b231193f -r 69e5c2373d37 lisp/window.el --- a/lisp/window.el Sat Jul 31 01:07:38 1993 +0000 +++ b/lisp/window.el Sat Jul 31 01:08:48 1993 +0000 @@ -139,7 +139,8 @@ (defun shrink-window-if-larger-than-buffer (&optional window) "Shrink the WINDOW to be as small as possible to display its contents. Do nothing if the buffer contains more lines than the present window height, -or if some of the window's contents are scrolled out of view." +or if some of the window's contents are scrolled out of view, +or if the window is the only window of its frame." (interactive) (save-excursion (set-buffer (window-buffer window)) @@ -147,16 +148,24 @@ (buffer-file-name buffer-file-name) (p (point)) (n 0) + (ignore-final-newline + ;; If buffer ends with a newline, ignore it when counting height + ;; unless point is after it. + (and (not (eobp)) + (eq ?\n (char-after (1- (point-max)))))) (window-min-height 0) (buffer-read-only nil) (modified (buffer-modified-p)) (buffer (current-buffer))) - (if (pos-visible-in-window-p (point-min)) + (if (and (< 1 (count-windows)) + (pos-visible-in-window-p (point-min))) (unwind-protect (progn (select-window (or window w)) (goto-char (point-min)) - (while (pos-visible-in-window-p (point-max)) + (while (pos-visible-in-window-p + (- (point-max) + (if ignore-final-newline 1 0))) ;; defeat file locking... don't try this at home, kids! (setq buffer-file-name nil) (insert ?\n) (setq n (1+ n)))