From 275623b88ad80c1a5345babaa878b44ec5677eb6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Sun, 11 May 2025 11:09:06 +0100 Subject: [PATCH] Eglot: fix call hierarchy navigation again (bug#78367, bug#78250) * lisp/progmodes/eglot.el (eglot--hierarchy-label): Fix again. (cherry picked from commit c69c18b732c2b1cd772dc7e15c0ea3074a3492bc) --- lisp/progmodes/eglot.el | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index ae7d63dc9d9..9a1f5cce4e6 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -4666,13 +4666,22 @@ 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 (or parent-uri uri)))) - (eglot--goto - (or - (elt - (get-text-property 0 'eglot--hierarchy-call-sites name) - 0) - item-range)))) + (let* ((method + (get-text-property 0 'eglot--hierarchy-method name)) + (target-uri + (if (eq method :callHierarchy/outgoingCalls) + ;; We probably want `parent-uri' for this edge case + ;; because that's where the call site we want + ;; lives. (bug#78250, bug#78367). + (or parent-uri uri) + uri))) + (pop-to-buffer (find-file-noselect (eglot-uri-to-path target-uri))) + (eglot--goto + (or + (elt + (get-text-property 0 'eglot--hierarchy-call-sites name) + 0) + item-range))))) (buffer-string)))) (defun eglot--hierarchy-1 (name provider preparer specs) -- 2.39.5