aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoão Távora2019-07-04 00:34:26 +0100
committerJoão Távora2019-07-04 00:38:46 +0100
commit5b48dab412c61980bca63a67a5d548d07e56b404 (patch)
tree42a9d05e5c1022321e1c7f98381ef68e76d9d1ac
parent22d99801edb8647c7adad01e6825a12849426419 (diff)
downloademacs-5b48dab412c61980bca63a67a5d548d07e56b404.tar.gz
emacs-5b48dab412c61980bca63a67a5d548d07e56b404.zip
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 overlay. (flymake-show-diagnostic): Use flymake-diagnostic-end, flymake-diagnostic-beg.
-rw-r--r--lisp/progmodes/flymake.el16
1 files changed, 11 insertions, 5 deletions
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index d662aaf4257..e8a4334fe96 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Pavel Kobyakov <pk_at_work@yahoo.com> 5;; Author: Pavel Kobyakov <pk_at_work@yahoo.com>
6;; Maintainer: João Távora <joaotavora@gmail.com> 6;; Maintainer: João Távora <joaotavora@gmail.com>
7;; Version: 1.0.7 7;; Version: 1.0.8
8;; Package-Requires: ((emacs "26.1")) 8;; Package-Requires: ((emacs "26.1"))
9;; Keywords: c languages tools 9;; Keywords: c languages tools
10 10
@@ -344,11 +344,17 @@ diagnostics at BEG."
344(flymake--diag-accessor flymake-diagnostic-buffer flymake--diag-buffer buffer) 344(flymake--diag-accessor flymake-diagnostic-buffer flymake--diag-buffer buffer)
345(flymake--diag-accessor flymake-diagnostic-text flymake--diag-text text) 345(flymake--diag-accessor flymake-diagnostic-text flymake--diag-text text)
346(flymake--diag-accessor flymake-diagnostic-type flymake--diag-type type) 346(flymake--diag-accessor flymake-diagnostic-type flymake--diag-type type)
347(flymake--diag-accessor flymake-diagnostic-beg flymake--diag-beg beg)
348(flymake--diag-accessor flymake-diagnostic-end flymake--diag-end end)
349(flymake--diag-accessor flymake-diagnostic-backend flymake--diag-backend backend) 347(flymake--diag-accessor flymake-diagnostic-backend flymake--diag-backend backend)
350(flymake--diag-accessor flymake-diagnostic-data flymake--diag-data backend) 348(flymake--diag-accessor flymake-diagnostic-data flymake--diag-data backend)
351 349
350(defun flymake-diagnostic-beg (diag)
351 "Get Flymake diagnostic DIAG's start position."
352 (overlay-start (flymake--diag-overlay diag)))
353
354(defun flymake-diagnostic-end (diag)
355 "Get Flymake diagnostic DIAG's end position."
356 (overlay-end (flymake--diag-overlay diag)))
357
352(cl-defun flymake--overlays (&key beg end filter compare key) 358(cl-defun flymake--overlays (&key beg end filter compare key)
353 "Get flymake-related overlays. 359 "Get flymake-related overlays.
354If BEG is non-nil and END is nil, consider only `overlays-at' 360If BEG is non-nil and END is nil, consider only `overlays-at'
@@ -1294,8 +1300,8 @@ default) no filter is applied."
1294 (with-selected-window 1300 (with-selected-window
1295 (display-buffer (current-buffer) other-window) 1301 (display-buffer (current-buffer) other-window)
1296 (goto-char (flymake--diag-beg diag)) 1302 (goto-char (flymake--diag-beg diag))
1297 (pulse-momentary-highlight-region (flymake--diag-beg diag) 1303 (pulse-momentary-highlight-region (flymake-diagnostic-beg diag)
1298 (flymake--diag-end diag) 1304 (flymake-diagnostic-end diag)
1299 'highlight)) 1305 'highlight))
1300 (current-buffer)))) 1306 (current-buffer))))
1301 1307