From 38a9c2655fd4530b8d3cc0f1bc8e5b46f5da04fe Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Thu, 8 May 2025 21:06:41 +0100 Subject: [PATCH] Eglot: fix navigation in eglot-hierarchy-mode (bug#78250) * lisp/progmodes/eglot.el (eglot--hierarchy-label): Take PARENT-URI. Rework. (eglot--hierarchy-2): Rework. (cherry picked from commit 7617c7a6e417d25807537c58bbe9c05376bbcece) --- lisp/progmodes/eglot.el | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 6f4a6e591f6..ae7d63dc9d9 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -4650,7 +4650,7 @@ If NOERROR, return predicate, else erroring function." map) "Keymap active in labels Eglot hierarchy buffers.") -(defun eglot--hierarchy-label (node) +(defun eglot--hierarchy-label (node parent-uri) (eglot--dbind ((HierarchyItem) name uri _detail ((:range item-range))) node (with-temp-buffer (insert (propertize @@ -4666,7 +4666,7 @@ If NOERROR, return predicate, else erroring function." 'keymap eglot-hierarchy-label-map 'action (lambda (_btn) - (pop-to-buffer (find-file-noselect (eglot-uri-to-path uri))) + (pop-to-buffer (find-file-noselect (eglot-uri-to-path (or parent-uri uri)))) (eglot--goto (or (elt @@ -4706,20 +4706,21 @@ If NOERROR, return predicate, else erroring function." (cl-labels ((expander-for (node) (lambda (_widget) (mapcar - #'convert + (lambda (child) + (convert child (plist-get node :uri))) (eglot--hierarchy-children node)))) - (convert (node) + (convert (node parent-uri) (let ((w (widget-convert 'tree-widget - :tag (eglot--hierarchy-label node) + :tag (eglot--hierarchy-label node parent-uri) :expander (expander-for node)))) (widget-put w :empty-icon (widget-get w :leaf-icon)) w))) (let ((inhibit-read-only t)) (erase-buffer) - (mapc (lambda (r) - (let ((w (widget-create (convert r)))) + (mapc (lambda (root) + (let ((w (widget-create (convert root nil)))) (widget-apply-action w))) eglot--hierarchy-roots) (goto-char (point-min)))) -- 2.39.5