From: Felician Nemeth <felician.nemeth@gmail.com>
To: "João Távora" <joaotavora@gmail.com>
Cc: Po Lu <luangruo@yahoo.com>,
Stefan Monnier <monnier@iro.umontreal.ca>,
Stefan Kangas <stefan@marxist.se>, Eli Zaretskii <eliz@gnu.org>,
emacs-devel <emacs-devel@gnu.org>
Subject: Re: Eglot to core [Was: rmsbolt.el [Was: Colorful line numbers]]
Date: Mon, 25 Jul 2022 17:00:51 +0200 [thread overview]
Message-ID: <87mtcxgrto.fsf@betli.tmit.bme.hu> (raw)
In-Reply-To: <87ilnlxtqz.fsf@gmail.com> ("João Távora"'s message of "Mon, 25 Jul 2022 13:27:16 +0100")
>> I don't think the current API is good enough for that. See
>> https://github.com/joaotavora/eglot/discussions/802#discussioncomment-2171239
>
> Really depends on what you consider "that" to be.
To implement non-standard LSP features, which lots of servers propose.
> [...] Also, once Eglot is in core, I won't be only person deciding.
(I welcome Eglot's inclusion in the core and appreciate your work. I
hope that's clear.)
>> More importantly, there are multiple language server implementations for
>> some languages (python, c) with different quirks or non-standard
>> extensions to the LSP protocol. How do you imagine a major-mode would
>> support these?
>
> They can adds methods to the generic function eglot-handle-request (and
> a handful others), set values of Eglot in their major-mode
> initialization code, bind keys to `eglot-*` interactive commands, make
> compound commands from those commands, etc.
OK. This is somewhat similar to the case when a major mode provides an
xref or a flymake backend.
But I think sometimes the reverse approach is more desirable. Let's
take a not so hypothetical example and say c++-mode wants to provide a
type-hierarchy browser. It's better to write a generic, language
agnostic hierarchy browser (maybe CEDET even has one), and extend Eglot
with a hierarchy browser backend similarly to its xref backend. The
hierarchy browser then can have a tree-sitter backend as well.
> While they _can_, but that doesn't mean they _must_ or even _should_.
> In fact, LSP's whole idea, which is surprisingly forgotten so often, is
> that server and editor need to know very little about each other to be
> able to cooperate. By and large this idea works very very well.
I agree, but non-standard extensions exist for a reason.
Almost all servers have a VS-Code specific part that contains at least a
list of configuration variables that other clients cannot handle
automatically. BTW, if Eglot knew about these configuration variables,
could `customize-group` somehow save the settings into a .dir-locals.el
file?
> Eglot works with tens of servers and hasn't got a line of server
> specific code, except for eglot-server-programs invocations. There
> are exceptions, and not everyone has the same luck, but I've been
> using C++ clangd and C# omnisharp quite a lot lately and I have 0
> lines of server specific config.
Even clangd has a moderately long list of extensions:
https://clangd.llvm.org/extensions.html#type-hierarchy
Sure, clangd is usable without them, but some of the extensions might
make someone's life easier, for example, by providing a type hierarchy
browser.
> [...] So there isn't any problem/drama here.
I don't want to start one either, but it's a good time to think once
more about Eglot's relations with other packages.
next prev parent reply other threads:[~2022-07-25 15:00 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-22 7:50 Colorful line numbers João Távora
2022-07-22 11:00 ` Eli Zaretskii
2022-07-22 11:29 ` João Távora
2022-07-22 11:42 ` Eli Zaretskii
2022-07-22 12:02 ` João Távora
2022-07-22 13:27 ` Eli Zaretskii
2022-07-22 13:53 ` João Távora
2022-07-22 14:33 ` Eli Zaretskii
2022-07-22 15:10 ` João Távora
2022-07-22 15:38 ` Eli Zaretskii
2022-07-22 16:30 ` rmsbolt.el [Was: Colorful line numbers] João Távora
2022-07-22 19:53 ` Stefan Monnier
2022-07-23 6:13 ` Eli Zaretskii
2022-07-23 9:35 ` João Távora
2022-07-23 10:25 ` Eli Zaretskii
2022-07-23 14:43 ` Stefan Monnier
2022-07-23 15:52 ` Eli Zaretskii
2022-07-23 16:31 ` Stefan Monnier
2022-07-23 17:07 ` Colorful line numbers Eli Zaretskii
2022-07-23 18:18 ` rmsbolt.el [Was: Colorful line numbers] João Távora
2022-07-23 18:11 ` João Távora
2022-07-23 14:53 ` Jay Kamat
2022-07-23 17:25 ` Stefan Monnier
2022-07-23 17:34 ` Eglot to core [Was: rmsbolt.el [Was: Colorful line numbers]] João Távora
2022-07-23 17:52 ` Stefan Monnier
2022-07-24 18:58 ` João Távora
2022-07-24 19:04 ` Stefan Monnier
2022-07-25 1:05 ` Po Lu
2022-07-25 2:45 ` Stefan Monnier
2022-07-25 5:55 ` Philip Kaludercic
2022-07-25 15:31 ` Stefan Monnier
2022-07-25 6:23 ` Po Lu
2022-07-25 10:49 ` Bozhidar Batsov
2022-07-25 11:01 ` João Távora
2022-07-25 11:50 ` Felician Nemeth
2022-07-25 12:27 ` João Távora
2022-07-25 12:29 ` João Távora
2022-07-25 15:00 ` Felician Nemeth [this message]
2022-07-25 15:41 ` João Távora
2022-07-26 8:12 ` Felician Nemeth
2022-07-26 8:21 ` João Távora
2022-07-26 8:55 ` Felician Nemeth
2022-07-25 16:07 ` Max Brieiev
2022-07-25 17:05 ` João Távora
2022-07-25 15:33 ` Stefan Monnier
2022-07-22 12:18 ` Colorful line numbers Dmitry Gutov
2022-07-22 12:38 ` Stefan Monnier
2022-07-22 13:41 ` Dmitry Gutov
2022-07-22 14:01 ` João Távora
2022-07-22 23:32 ` Stefan Monnier
2022-07-23 18:50 ` Dmitry Gutov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mtcxgrto.fsf@betli.tmit.bme.hu \
--to=felician.nemeth@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=joaotavora@gmail.com \
--cc=luangruo@yahoo.com \
--cc=monnier@iro.umontreal.ca \
--cc=stefan@marxist.se \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).