From 9adf1f06524ab88412a11161f9cbfdc3283c2a13 Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Fri, 12 Dec 2008 09:32:02 +0000 Subject: [PATCH] (fit-window-to-buffer): Return non-nil when height was orderly adjusted, nil otherwise. --- lisp/ChangeLog | 5 +++++ lisp/window.el | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 13cf27a91b0..2a2f62c3c63 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2008-12-12 Martin Rudalics + + * window.el (fit-window-to-buffer): Return non-nil when height + was orderly adjusted, nil otherwise. + 2008-12-12 Juanma Barranquero Stefan Monnier diff --git a/lisp/window.el b/lisp/window.el index 6b1cc9a2d4e..ed97c61f434 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -1294,7 +1294,7 @@ in some window." (defun fit-window-to-buffer (&optional window max-height min-height) "Adjust height of WINDOW to display its buffer's contents exactly. -WINDOW defaults to the selected window. Return nil. +WINDOW defaults to the selected window. Optional argument MAX-HEIGHT specifies the maximum height of the window and defaults to the maximum permissible height of a window on WINDOW's frame. @@ -1303,12 +1303,15 @@ window and defaults to `window-min-height'. Both, MAX-HEIGHT and MIN-HEIGHT are specified in lines and include the mode line and header line, if any. +Return non-nil if height was orderly adjusted, nil otherwise. + Caution: This function can delete WINDOW and/or other windows when their height shrinks to less than MIN-HEIGHT." (interactive) ;; Do all the work in WINDOW and its buffer and restore the selected ;; window and the current buffer when we're done. - (let ((old-buffer (current-buffer))) + (let ((old-buffer (current-buffer)) + value) (with-selected-window (or window (setq window (selected-window))) (set-buffer (window-buffer)) ;; Use `condition-case' to handle any fixed-size windows and other @@ -1384,10 +1387,13 @@ when their height shrinks to less than MIN-HEIGHT." (= desired-height (window-height)) (not (pos-visible-in-window-p end))) (enlarge-window 1) - (setq desired-height (1+ desired-height)))))) + (setq desired-height (1+ desired-height)))) + ;; Return non-nil only if nothing "bad" happened. + (setq value t))) (error nil))) (when (buffer-live-p old-buffer) - (set-buffer old-buffer)))) + (set-buffer old-buffer)) + value)) (defun window-safely-shrinkable-p (&optional window) "Return t if WINDOW can be shrunk without shrinking other windows. -- 2.39.5