]> git.eshelyaron.com Git - emacs.git/commitdiff
Prevent empty diagnostic tags vector hiding main fontification
authorBrian Leung <bkleung89@gmail.com>
Tue, 1 Mar 2022 15:59:05 +0000 (07:59 -0800)
committerJoão Távora <joaotavora@gmail.com>
Wed, 2 Mar 2022 10:35:25 +0000 (10:35 +0000)
* eglot.el (eglot-handle-notification): Require that the resulting
list of faces is non-empty and that each face corresponds only to a
known tag.

For unknown tags, we don't pass any additional face information to
Flymake, and instead expect it to make the appropriate overlay with
the "severity" property of the Diagnostic.

Co-authored-by: João Távora <joaotavora@gmail.com>
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/851

lisp/progmodes/eglot.el

index 5a0a8caba4866dab437dec222b295203920959c6..3f84b3b7a262a067ecc80b417436af7db6f710a5 100644 (file)
@@ -1866,11 +1866,11 @@ COMMAND is a symbol naming the command."
                         (current-buffer) beg end
                         (eglot--diag-type severity)
                         message `((eglot-lsp-diag . ,diag-spec))
-                        (and tags
-                             `((face
-                                . ,(mapcar (lambda (tag)
-                                             (alist-get tag eglot--tag-faces))
-                                           tags)))))))
+                        (when-let ((faces
+                                    (cl-loop for tag across tags
+                                             when (alist-get tag eglot--tag-faces)
+                                             collect it)))
+                          `((face . ,faces))))))
            into diags
            finally (cond (eglot--current-flymake-report-fn
                           (eglot--report-to-flymake diags))