(defun shrink-window-if-larger-than-buffer (&optional window)
"Shrink the WINDOW to be as small as possible to display its contents.
+Do not shrink to less that `window-min-height' lines.
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 the window is not the full width of the frame,
;; 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))
;; defeat file locking... don't try this at home, kids!
(setq buffer-file-name nil)
(insert ?\n) (setq n (1+ n)))
- (if (> n 0) (shrink-window (1- n))))
+ (if (> n 0)
+ (shrink-window (min (1- n)
+ (- (window-height)
+ window-min-height)))))
(delete-region (point-min) (point))
(set-buffer-modified-p modified)
(goto-char p)