tag: 1.2
commit 53c8f5980de1cfaa0a629451378ae0bed689f58b
Author: Michał K <[email protected]>
Commit: Michał Krzywkowski <[email protected]>
Handle case when diagnostic :character is out of range
* eglot.el (eglot-handle-notification): Don't error out when
flymake-diag-region returns nil.
---
eglot.el | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/eglot.el b/eglot.el
index 8014024..b25d8b9 100644
--- a/eglot.el
+++ b/eglot.el
@@ -1080,14 +1080,21 @@ COMMAND is a symbol naming the command."
((`(,beg . ,end) (eglot--range-region range)))
;; Fallback to `flymake-diag-region' if server
;; botched the range
- (if (= beg end)
- (let* ((st (plist-get range :start))
- (diag-region
- (flymake-diag-region
- (current-buffer) (1+ (plist-get st :line))
- (plist-get st :character))))
- (setq beg (car diag-region)
- end (cdr diag-region))))
+ (when (= beg end)
+ (if-let* ((st (plist-get range :start))
+ (diag-region
+ (flymake-diag-region
+ (current-buffer) (1+ (plist-get st :line))
+ (plist-get st :character))))
+ (setq beg (car diag-region) end (cdr diag-region))
+ (eglot--widening
+ (goto-char (point-min))
+ (setq beg
+ (point-at-bol
+ (1+ (plist-get (plist-get range :start)
:line))))
+ (setq end
+ (point-at-eol
+ (1+ (plist-get (plist-get range :end)
:line)))))))
(eglot--make-diag (current-buffer) beg end
(cond ((<= sev 1) 'eglot-error)
((= sev 2) 'eglot-warning)