branch: externals/eglot
commit 33c464f658de70f36c27237d57b9c9858c68bc81
Author: João Távora <[email protected]>
Commit: João Távora <[email protected]>
Per #131, #314: Be more conservative with the LSP identifier guess
If the user is not requesting a prompt, opt for the safer approach
which is to get the location from textDocument/definition, not from
workspace/symbol. Because of things like function overloading, the
latter is not always successful in finding exactly the definition of
the thing one is invoking M-. on.
This requires using an xref-internal symbol, which is kind of
unfortunate.
* eglot.el (xref-backend-identifier-at-point): Rework.
---
eglot.el | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/eglot.el b/eglot.el
index 22eff41f53..0b64cd2301 100644
--- a/eglot.el
+++ b/eglot.el
@@ -2458,10 +2458,11 @@ If BUFFER, switch to it before."
(cl-defmethod xref-backend-identifier-at-point ((_backend (eql eglot)))
(let ((attempt
- (puthash :default
- (ignore-errors
- (eglot--workspace-symbols (symbol-name (symbol-at-point))))
- eglot--workspace-symbols-cache)))
+ (and (xref--prompt-p this-command)
+ (puthash :default
+ (ignore-errors
+ (eglot--workspace-symbols (symbol-name
(symbol-at-point))))
+ eglot--workspace-symbols-cache))))
(if attempt (car attempt) "LSP identifier at point")))
(defvar eglot--lsp-xref-refs nil