From 52b61776c594e1e4f30f8e281e7ead79d56383d5 Mon Sep 17 00:00:00 2001 From: Troels Nielsen Date: Sun, 6 May 2012 12:52:58 +0800 Subject: [PATCH] Fix match highlighting in compilation buffers. * progmodes/compile.el (compilation-internal-error-properties): Calculate start position correctly when end-col is set but end-line is not. Fixes: debbugs:11382 --- lisp/ChangeLog | 6 ++++++ lisp/progmodes/compile.el | 18 +++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2a33bffca18..134c208e544 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2012-05-06 Troels Nielsen (tiny change) + + * progmodes/compile.el (compilation-internal-error-properties): + Calculate start position correctly when end-col is set but + end-line is not (Bug#11382). + 2012-05-06 Wolfgang Jenkner * man.el (Man-unindent): Use text-property-default-nonsticky to diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index f22ee4f7ea5..7ffaddb2c49 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -1068,14 +1068,14 @@ FMTS is a list of format specs for transforming the file name. end-marker loc end-loc) (if (not (and marker (marker-buffer marker))) (setq marker nil) ; no valid marker for this file - (setq loc (or line 1)) ; normalize no linenumber to line 1 + (unless line (setq line 1)) ; normalize no linenumber to line 1 (catch 'marker ; find nearest loc, at least one exists (dolist (x (cddr (compilation--file-struct->loc-tree file-struct))) ; Loop over remaining lines. - (if (> (car x) loc) ; Still bigger. + (if (> (car x) line) ; Still bigger. (setq marker-line x) - (if (> (- (or (car marker-line) 1) loc) - (- loc (car x))) ; Current line is nearer. + (if (> (- (or (car marker-line) 1) line) + (- line (car x))) ; Current line is nearer. (setq marker-line x)) (throw 'marker t)))) (setq marker (compilation--loc->marker (cadr marker-line)) @@ -1093,15 +1093,15 @@ FMTS is a list of format specs for transforming the file name. (save-restriction (widen) (goto-char (marker-position marker)) - (when (or end-col end-line) + ;; Set end-marker if appropriate and go to line. + (if (not (or end-col end-line)) + (beginning-of-line (- line marker-line -1)) (beginning-of-line (- (or end-line line) marker-line -1)) (if (or (null end-col) (< end-col 0)) (end-of-line) (compilation-move-to-column end-col screen-columns)) - (setq end-marker (point-marker))) - (beginning-of-line (if end-line - (- line end-line -1) - (- loc marker-line -1))) + (setq end-marker (point-marker)) + (when end-line (beginning-of-line (- line end-line -1)))) (if col (compilation-move-to-column col screen-columns) (forward-to-indentation 0)) -- 2.39.2