diff lisp/progmodes/compile.el @ 91811:3db89e7c0f1d

(compilation-auto-jump): Call compile-goto-error only when compilation-auto-jump-to-first-error is non-nil. (compilation-scroll-output): Replace :type 'boolean with a choice that has three options including a third option `first-error'. Doc fix. (compilation-start, compilation-forget-errors): Add an alternate condition comparing compilation-scroll-output with `first-error' in addition to compilation-auto-jump-to-first-error (to call compilation-auto-jump in the proper place).
author Juri Linkov <juri@jurta.org>
date Tue, 12 Feb 2008 23:41:32 +0000
parents de8465ae991c
children 4ab3a4d4cc4e
line wrap: on
line diff
--- a/lisp/progmodes/compile.el	Tue Feb 12 23:41:19 2008 +0000
+++ b/lisp/progmodes/compile.el	Tue Feb 12 23:41:32 2008 +0000
@@ -762,7 +762,8 @@
 (defun compilation-auto-jump (buffer pos)
   (with-current-buffer buffer
     (goto-char pos)
-    (compile-goto-error)))
+    (if compilation-auto-jump-to-first-error
+	(compile-goto-error))))
 
 ;; This function is the central driver, called when font-locking to gather
 ;; all information needed to later jump to corresponding source code.
@@ -1054,8 +1055,13 @@
 
 Setting it causes the Compilation mode commands to put point at the
 end of their output window so that the end of the output is always
-visible rather than the beginning."
-  :type 'boolean
+visible rather than the beginning.
+
+The value `first-error' stops scrolling at the first error, and leaves
+point on its location in the *compilation* buffer."
+  :type '(choice (const :tag "No scrolling" nil)
+		 (const :tag "Scroll compilation output" t)
+		 (const :tag "Stop scrolling at the first error" first-error))
   :version "20.3"
   :group 'compilation)
 
@@ -1168,7 +1174,8 @@
 	(if highlight-regexp
 	    (set (make-local-variable 'compilation-highlight-regexp)
 		 highlight-regexp))
-        (if compilation-auto-jump-to-first-error
+        (if (or compilation-auto-jump-to-first-error
+		(eq compilation-scroll-output 'first-error))
             (set (make-local-variable 'compilation-auto-jump-to-next) t))
 	;; Output a mode setter, for saving and later reloading this buffer.
 	(insert "-*- mode: " name-of-mode
@@ -2160,7 +2167,8 @@
   ;; compilations, to set the beginning of "this compilation", it's a good
   ;; place to reset compilation-auto-jump-to-next.
   (set (make-local-variable 'compilation-auto-jump-to-next)
-       compilation-auto-jump-to-first-error))
+       (or compilation-auto-jump-to-first-error
+	   (eq compilation-scroll-output 'first-error))))
 
 ;;;###autoload
 (add-to-list 'auto-mode-alist '("\\.gcov\\'" . compilation-mode))