Commit 5b48dab4 authored by João Távora's avatar João Távora

Fix Flymake's user-visible accessors of diagnostic positions

Diagnostics are supported by overlays, and they can legitimately move
around.  So flymake-diagnostic-beg and flymake-diagnostic-end must
look up the overlay positions, not the immutable slots of the
flymake--diag structure, which become stale.

* lisp/progmodes/flymake.el (version): Bump to 1.0.8.
(flymake-diagnostic-beg, flymake-diagnostic-end): Use diag's
(flymake-show-diagnostic): Use flymake-diagnostic-end,
parent 22d99801
Pipeline #2240 failed with stage
in 51 minutes and 42 seconds
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
;; Author: Pavel Kobyakov <> ;; Author: Pavel Kobyakov <>
;; Maintainer: João Távora <> ;; Maintainer: João Távora <>
;; Version: 1.0.7 ;; Version: 1.0.8
;; Package-Requires: ((emacs "26.1")) ;; Package-Requires: ((emacs "26.1"))
;; Keywords: c languages tools ;; Keywords: c languages tools
...@@ -344,11 +344,17 @@ diagnostics at BEG." ...@@ -344,11 +344,17 @@ diagnostics at BEG."
(flymake--diag-accessor flymake-diagnostic-buffer flymake--diag-buffer buffer) (flymake--diag-accessor flymake-diagnostic-buffer flymake--diag-buffer buffer)
(flymake--diag-accessor flymake-diagnostic-text flymake--diag-text text) (flymake--diag-accessor flymake-diagnostic-text flymake--diag-text text)
(flymake--diag-accessor flymake-diagnostic-type flymake--diag-type type) (flymake--diag-accessor flymake-diagnostic-type flymake--diag-type type)
(flymake--diag-accessor flymake-diagnostic-beg flymake--diag-beg beg)
(flymake--diag-accessor flymake-diagnostic-end flymake--diag-end end)
(flymake--diag-accessor flymake-diagnostic-backend flymake--diag-backend backend) (flymake--diag-accessor flymake-diagnostic-backend flymake--diag-backend backend)
(flymake--diag-accessor flymake-diagnostic-data flymake--diag-data backend) (flymake--diag-accessor flymake-diagnostic-data flymake--diag-data backend)
(defun flymake-diagnostic-beg (diag)
"Get Flymake diagnostic DIAG's start position."
(overlay-start (flymake--diag-overlay diag)))
(defun flymake-diagnostic-end (diag)
"Get Flymake diagnostic DIAG's end position."
(overlay-end (flymake--diag-overlay diag)))
(cl-defun flymake--overlays (&key beg end filter compare key) (cl-defun flymake--overlays (&key beg end filter compare key)
"Get flymake-related overlays. "Get flymake-related overlays.
If BEG is non-nil and END is nil, consider only `overlays-at' If BEG is non-nil and END is nil, consider only `overlays-at'
...@@ -1294,8 +1300,8 @@ default) no filter is applied." ...@@ -1294,8 +1300,8 @@ default) no filter is applied."
(with-selected-window (with-selected-window
(display-buffer (current-buffer) other-window) (display-buffer (current-buffer) other-window)
(goto-char (flymake--diag-beg diag)) (goto-char (flymake--diag-beg diag))
(pulse-momentary-highlight-region (flymake--diag-beg diag) (pulse-momentary-highlight-region (flymake-diagnostic-beg diag)
(flymake--diag-end diag) (flymake-diagnostic-end diag)
'highlight)) 'highlight))
(current-buffer)))) (current-buffer))))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment