diff lisp/progmodes/compile.el @ 8483:19dbc8373bec

(compilation-set-window-height): New function, broken out from compile-internal. Don't change window height if it is the frame root window. (compile-internal): Call it. (compilation-goto-locus): Call it. Use any visible frame already showing the compilation buffer.
author Richard M. Stallman <rms@gnu.org>
date Mon, 08 Aug 1994 09:02:40 +0000
parents 8b8835f1630a
children 593457877265
line wrap: on
line diff
--- a/lisp/progmodes/compile.el	Mon Aug 08 07:08:17 1994 +0000
+++ b/lisp/progmodes/compile.el	Mon Aug 08 09:02:40 1994 +0000
@@ -380,15 +380,7 @@
 	(setq mode-name name-of-mode)
 	(or (eq outwin (selected-window))
 	    (set-window-point outwin (point-min)))
-	(and compilation-window-height
-	     (= (window-width outwin) (frame-width))
-	     (let ((w (selected-window)))
-	       (unwind-protect
-		   (progn
-		     (select-window outwin)
-		     (enlarge-window (- compilation-window-height
-					(window-height))))
-		 (select-window w))))
+	(compilation-set-window-height outwin)
 	;; Start the compilation.
 	(if (fboundp 'start-process)
 	    (let ((proc (start-process-shell-command (downcase mode-name)
@@ -407,6 +399,21 @@
     ;; Make it so the next C-x ` will use this buffer.
     (setq compilation-last-buffer outbuf)))
 
+;; Set the height of WINDOW according to compilation-window-height.
+(defun compilation-set-window-height (window)
+  (and compilation-window-height
+       (= (window-width window) (frame-width (window-frame window)))
+       ;; If window is alone in its frame, aside from a minibuffer,
+       ;; don't change its height.
+       (not (eq window (frame-root-window (window-frame window))))
+       (let ((w (selected-window)))
+	 (unwind-protect
+	     (progn
+	       (select-window window)
+	       (enlarge-window (- compilation-window-height
+				  (window-height))))
+	   (select-window w)))))
+
 (defvar compilation-minor-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map [mouse-2] 'compile-mouse-goto-error)
@@ -1044,9 +1051,11 @@
 
   ;; Show compilation buffer in other window, scrolled to this error.
   (let* ((pop-up-windows t)
-	 (w (display-buffer (marker-buffer (car next-error)))))
+	 (w (or (get-buffer-window (marker-buffer (car next-error)) 'visible)
+		(display-buffer (marker-buffer (car next-error))))))
     (set-window-point w (car next-error))
-    (set-window-start w (car next-error))))
+    (set-window-start w (car next-error))
+    (compilation-set-window-height w)))
 
 ;; Find a buffer for file FILENAME.
 ;; Search the directories in compilation-search-path.