Function: eglot--flymake-make-diag
eglot--flymake-make-diag is a byte-compiled function defined in
eglot.el.gz.
Signature
(eglot--flymake-make-diag DIAG-SPEC VERSION)
Documentation
Convert LSP diagnostic DIAG-SPEC to Flymake diagnostic.
VERSION is the document version number.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/eglot.el.gz
(defun eglot--flymake-make-diag (diag-spec version)
"Convert LSP diagnostic DIAG-SPEC to Flymake diagnostic.
VERSION is the document version number."
(eglot--dbind ((Diagnostic) range code message severity source tags)
diag-spec
(pcase-let
((`(,beg . ,end) (eglot-range-region range)))
;; Fallback to `flymake-diag-region' if server botched the range
(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
(eglot--bol
(1+ (plist-get (plist-get range :start) :line))))
(setq end
(line-end-position
(1+ (plist-get (plist-get range :end) :line)))))))
(flymake-make-diagnostic
(current-buffer) beg end
(eglot--flymake-diag-type severity)
(list source code message)
`((eglot-lsp-diag . ,diag-spec)
(eglot--doc-version . ,version))
(when-let* ((faces
(cl-loop for tag across tags
when (alist-get tag eglot--tag-faces)
collect it)))
`((face . ,faces)))))))