emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Xref/Eglot feature requests and a question


From: Dmitry Gutov
Subject: Re: Xref/Eglot feature requests and a question
Date: Thu, 24 Aug 2023 18:13:12 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0

On 24/08/2023 16:33, Gerd Möllmann wrote:
I have a couple of feature requests regarding Xref and/or Eglot, after
switching from Lsp-mode to Eglot yesterday, which BTW went really
well. Thanks to João!

1.

I'm in a C buffer with Eglot running, and I want to go to the definition
of something whose name I know, but point is not on an identifier naming
that thing.  For instance, I want to go the definition of Lisp_Package
(in an obsure branch having a struct Lisp_Package), while point is
somewhere.

C-u M-. offers some completions, but Lisp_Package is not among them.
Not using a completion and entering Lisp_Package works.

Feature request: Could the completions be made to contain all workspace
symbols?  Lsp-mode has something doing that, and I found it quite useful
with Helm.

C-M-. Lisp_Package RET works fine, but entering a word list as
advertised in the prompt, say "Li Pa", does not.

Question: Bug or limitation?

Both of these are up to Eglot, I think. Or the underlying language server.

3.

In C mode, Xref works using Eglot, in ELisp mode it uses something else
(I have no tags tables).  Both work really well, but I apparently have
to be in an ELisp buffer to use one and in a C buffer to use the other.

Feature request: Is it possible to use more than one backend at the same
time?  So that I could C-M-. to find an ELisp function while being in a
C file?  I couldn't find something like that mentioned in the docs, so I
guess it's not yet possible.

No such capability at the moment, but we indeed have an ELPA package xref-union which implements the "merging" feature that has been requested in the past.

You are asking for something a little different, though: to be able to switch to a different language/project that's also present in the current Emacs session. Its backend function cannot be found in the xref-backend-functions in the current buffer (local or global), unlike the examples with mixing in etags or imenu results, like mentioned by Visuwesh.

A naive approach, or for the new code to search across different open buffers and look for different available xref-backend-functions elements. And then prompt the user, and then call (?) the said function in one of the buffers it was found in, because in all likelihood it would fail in unrelated ones.

Perhaps the solution is to add a new facility to Xref, where different "projects" would be able to register globally in. A feature request indeed.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]