changeset 3342:ce8aa0ba8b08

(shrink-window-if-larger-than-buffer): Add `interactive'. Do nothing if window contents not entirely visible.
author Richard M. Stallman <rms@gnu.org>
date Mon, 31 May 1993 04:56:19 +0000
parents 79657d6d8843
children d5fde107dbe3
files lisp/window.el
diffstat 1 files changed, 21 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/window.el	Mon May 31 04:24:14 1993 +0000
+++ b/lisp/window.el	Mon May 31 04:56:19 1993 +0000
@@ -111,9 +111,10 @@
   (shrink-window arg t))
 
 (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 only one window is displayed or if the buffer contains more lines
-than the present window height."
+  "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."
+  (interactive)
   (save-excursion
     (set-buffer (window-buffer window))
     (let ((w (selected-window)) ;save-window-excursion can't win
@@ -124,22 +125,23 @@
 	  (buffer-read-only nil)
 	  (modified (buffer-modified-p))
 	  (buffer (current-buffer)))
-      (unwind-protect
-	  (progn
-	    (select-window (or window w))
-	    (goto-char (point-min))
-	    (while (pos-visible-in-window-p (point-max))
-	      ;; 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))))
-	(delete-region (point-min) (point))
-	(set-buffer-modified-p modified)
-	(goto-char p)
-	(select-window w)
-	;; Make sure we unbind buffer-read-only
-	;; with the proper current buffer.
-	(set-buffer buffer)))))
+      (if (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))
+		  ;; 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))))
+	    (delete-region (point-min) (point))
+	    (set-buffer-modified-p modified)
+	    (goto-char p)
+	    (select-window w)
+	    ;; Make sure we unbind buffer-read-only
+	    ;; with the proper current buffer.
+	    (set-buffer buffer))))))
       
 (define-key ctl-x-map "2" 'split-window-vertically)
 (define-key ctl-x-map "3" 'split-window-horizontally)