changeset 24108:5f499867bc7e

(compilation-goto-locus): If already in the compilation buffer's window, keep it in that window. (compile-mouse-goto-error): Add Doc. Don't play with windows. (compile-goto-error): Don't play with windows.
author Richard M. Stallman <rms@gnu.org>
date Mon, 18 Jan 1999 01:10:25 +0000
parents c222b0bea4f0
children e1e1bb544d84
files lisp/progmodes/compile.el
diffstat 1 files changed, 14 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/compile.el	Mon Jan 18 01:02:58 1999 +0000
+++ b/lisp/progmodes/compile.el	Mon Jan 18 01:10:25 1999 +0000
@@ -1270,6 +1270,9 @@
 	    )))))
 
 (defun compile-mouse-goto-error (event)
+  "Visit the source for the error message the mouse is pointing at.
+This is like `compile-goto-error' called without prefix arg
+at the end of the line."
   (interactive "e")
   (save-excursion
     (set-buffer (window-buffer (posn-window (event-end event))))
@@ -1297,14 +1300,6 @@
     (or compilation-error-list
 	(error "No error to go to")))
   (select-window (posn-window (event-end event)))
-  ;; Move to another window, so that next-error's window changes
-  ;; result in the desired setup.
-  (or (one-window-p)
-      (progn
-	(other-window -1)
-	;; other-window changed the selected buffer,
-	;; but we didn't want to do that.
-	(set-buffer compilation-last-buffer)))
 
   (push-mark)
   (next-error 1))
@@ -1330,15 +1325,6 @@
 	      (> (point) (car (car compilation-error-list))))
     (setq compilation-error-list (cdr compilation-error-list)))
 
-  ;; Move to another window, so that next-error's window changes
-  ;; result in the desired setup.
-  (or (one-window-p)
-      (progn
-	(other-window -1)
-	;; other-window changed the selected buffer,
-	;; but we didn't want to do that.
-	(set-buffer compilation-last-buffer)))
-
   (push-mark)
   (next-error 1))
 
@@ -1583,10 +1569,17 @@
   "Jump to an error locus returned by `compilation-next-error-locus'.
 Takes one argument, a cons (ERROR . SOURCE) of two markers.
 Selects a window with point at SOURCE, with another window displaying ERROR."
-  (if (and (window-dedicated-p (selected-window))
-	   (eq (selected-window) (frame-root-window)))
-      (switch-to-buffer-other-frame (marker-buffer (cdr next-error)))
-    (switch-to-buffer (marker-buffer (cdr next-error))))
+  (if (eq (window-buffer (selected-window))
+	  (marker-buffer (car next-error)))
+      ;; If the compilation buffer window is selected,
+      ;; keep the compilation buffer in this window;
+      ;; display the source in another window.
+      (let ((pop-up-windows t))
+	(pop-to-buffer (marker-buffer (cdr next-error))))
+    (if (and (window-dedicated-p (selected-window))
+	     (eq (selected-window) (frame-root-window)))
+	(switch-to-buffer-other-frame (marker-buffer (cdr next-error)))
+      (switch-to-buffer (marker-buffer (cdr next-error)))))
   (goto-char (cdr next-error))
   ;; If narrowing got in the way of
   ;; going to the right place, widen.