]> git.eshelyaron.com Git - emacs.git/commitdiff
Eglot: fix problems after changes to eglot-imenu (bug#62718)
authorJoão Távora <joaotavora@gmail.com>
Fri, 7 Apr 2023 22:00:44 +0000 (23:00 +0100)
committerJoão Távora <joaotavora@gmail.com>
Fri, 7 Apr 2023 22:00:44 +0000 (23:00 +0100)
* lisp/progmodes/eglot.el (eglot--imenu-SymbolInformation)
(eglot--imenu-DocumentSymbol): Fix.

lisp/progmodes/eglot.el

index 99b3925f05f3e279c932ab932761b9ea5e48d136..6134ab9150ca242906bf22285df58d19df85d57c 100644 (file)
@@ -3247,7 +3247,8 @@ for which LSP on-type-formatting should be requested."
          (let ((elems (mapcar
                        (eglot--lambda ((SymbolInformation) kind name location)
                          (let ((reg (eglot--range-region
-                                     (plist-get location :range))))
+                                     (plist-get location :range)))
+                               (kind (alist-get kind eglot--symbol-kind-names)))
                            (cons (propertize name
                                              'breadcrumb-region reg
                                              'breadcrumb-kind kind)
@@ -3262,13 +3263,14 @@ for which LSP on-type-formatting should be requested."
   "Compute `imenu--index-alist' for RES vector of DocumentSymbol."
   (cl-labels ((dfs (&key name children range kind &allow-other-keys)
                 (let* ((reg (eglot--range-region range))
+                       (kind (alist-get kind eglot--symbol-kind-names))
                        (name (propertize name
                                          'breadcrumb-region reg
                                          'breadcrumb-kind kind)))
-                  (if children
-                      (cons name
-                            (mapcar (lambda (c) (apply #'dfs c)) children))
-                    (cons name (car reg))))))
+                  (if (seq-empty-p children)
+                      (cons name (car reg))
+                    (cons name
+                            (mapcar (lambda (c) (apply #'dfs c)) children))))))
     (mapcar (lambda (s) (apply #'dfs s)) res)))
 
 (defun eglot-imenu ()