diff options
| author | João Távora | 2019-07-04 00:34:26 +0100 |
|---|---|---|
| committer | João Távora | 2019-07-04 00:38:46 +0100 |
| commit | 5b48dab412c61980bca63a67a5d548d07e56b404 (patch) | |
| tree | 42a9d05e5c1022321e1c7f98381ef68e76d9d1ac | |
| parent | 22d99801edb8647c7adad01e6825a12849426419 (diff) | |
| download | emacs-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.el | 16 |
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. |
| 354 | If BEG is non-nil and END is nil, consider only `overlays-at' | 360 | If 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 | ||