changeset 73104:a90c9318cca9

(compilation-goto-locus-delete-o): New fn. (compilation-goto-locus): Use compilation-goto-locus-delete-o to delete the overlay. Put it on pre-command-hook.
author Richard M. Stallman <rms@gnu.org>
date Sun, 24 Sep 2006 20:42:08 +0000
parents 76400a9b9e59
children 8a999db76eda
files lisp/progmodes/compile.el
diffstat 1 files changed, 21 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/compile.el	Sun Sep 24 20:39:52 2006 +0000
+++ b/lisp/progmodes/compile.el	Sun Sep 24 20:42:08 2006 +0000
@@ -1784,17 +1784,31 @@
 				(current-buffer)))
 	      (move-overlay compilation-highlight-overlay
 			    (point) end (current-buffer)))
-	    (if (numberp next-error-highlight)
-		(setq next-error-highlight-timer
-		      (run-at-time next-error-highlight nil 'delete-overlay
-				   compilation-highlight-overlay)))
-	    (if (not (or (eq next-error-highlight t)
-			 (numberp next-error-highlight)))
-		(delete-overlay compilation-highlight-overlay))))))
+	    (if (or (eq next-error-highlight t)
+		    (numberp next-error-highlight))
+		;; We want highlighting: delete overlay on next input.
+		(add-hook 'pre-command-hook
+			  'compilation-goto-locus-delete-o)
+	      ;; We don't want highlighting: delete overlay now.
+	      (delete-overlay compilation-highlight-overlay))
+	    ;; We want highlighting for a limited time:
+	    ;; set up a timer to delete it.
+	    (when (numberp next-error-highlight)
+	      (setq next-error-highlight-timer
+		    (run-at-time next-error-highlight nil
+				 'compilation-goto-locus-delete-o)))))))
     (when (and (eq next-error-highlight 'fringe-arrow))
+      ;; We want a fringe arrow (instead of highlighting).
       (setq next-error-overlay-arrow-position
 	    (copy-marker (line-beginning-position))))))
 
+(defun compilation-goto-locus-delete-o ()
+  (delete-overlay compilation-highlight-overlay)
+  ;; Get rid of timer and hook that would try to do this again.
+  (if (timerp next-error-highlight-timer)
+      (cancel-timer next-error-highlight-timer))
+  (remove-hook 'pre-command-hook
+	       'compilation-goto-locus-delete-o))
 
 (defun compilation-find-file (marker filename directory &rest formats)
   "Find a buffer for file FILENAME.