Subject: bug#64159: Feature suggestion for eglot: preferred LSP servers

From: João Távora <[email-masked]>
Date: Sun, 18 Jun 2023 22:13:43 +0100

On Sun, Jun 18, 2023 at 5:16 PM Jeremy Bryant <[email-masked]> wrote:
>
>
> (Expanding an initial discussion with Joao to the proper email list)
>
> Hi,
>
> The variable eglot-server-programs includes suitable LSP servers per
> major mode.  Would it be useful for users to extend this to a preference by order?
>
> For example, for example eglot has 2 supported programs for TeX:
>                                 ((tex-mode context-mode texinfo-mode bibtex-mode)
>                                   . ,(eglot-alternatives '("digestif" "texlab")))
>
> Is one preferred in terms of compatibility with eglot or other
> functionality?  This could be implemented with a specific order.

Just a preamble: Eglot is an LSP client.  The (great) idea behind
LSP is for every client to be compatible with every server.  That's
not always  respected by client/server implementers (the most common
case is servers who assume that VSCode, made by the company who also
makes the standard, is the de facto standard).  But in most cases
it _is_ respected is, and certainly Eglot as a Client strives to
achieve that.

So, in my view, it makes little sense to talk about "servers supported
or compatible with eglot" .  Even eglot-server-programs itself is a bit
of an anti-LSP thing, though admittedly it's a very useful one in some
cases.  It's just a list of server invocations that Emacs can guess
for the current major mode.   I almost always start my daily clangd
sessions with C-u M-x eglot, for example, and then pass one or other command
line argument to the prompt, referring to history.  I do this once
or twice a day at most, and barely lose any time.  So eglot-server-programs
is almost useless to me.  I try experimental servers all the time, and
point Eglot to it with the same method.

So the order of the alternatives isn't really important, or thought
over.  At least by me it isn't.

Hope this helps,

João (with a tilde on the a for a nice round nasal ão)