# HG changeset patch # User Richard M. Stallman # Date 1159130528 0 # Node ID a90c9318cca9ac828bc90e33ced20ab84cc11b25 # Parent 76400a9b9e59552b4bf3f44956e0f6c79d2be297 (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. diff -r 76400a9b9e59 -r a90c9318cca9 lisp/progmodes/compile.el --- 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.