tag: 1.2
commit 922f4e579fb7c9412a83b0891aa5daeab3ab76a3
Merge: 7583849 53c8f59
Author: mkcms <[email protected]>
Commit: GitHub <[email protected]>
Merge pull request #104 from mkcms/fix-diagnostics-wrong-type-argument
Handle case when diagnostic :character is out of range
---
eglot.el | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/eglot.el b/eglot.el
index b660683..41863cc 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)