unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
@ 2024-07-12 11:33 Niels Thykier
  2024-07-13  6:15 ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: Niels Thykier @ 2024-07-12 11:33 UTC (permalink / raw)
  To: 72088

Hi

Thanks for providing LSP support in emacs. :)


For reference, I used emacs 29.4 from Debian when I tested. If this 
feature has changed in emacs 30, then I would not have seen it yet (I am 
not tracking emacs/eglot development a lot).


I am working on a language server for Debian packaging (called 
`debputy`). The Debian packaging files consists of several different 
file formats with cross references between the formats. As a 
consequence, I built my language server to be a "polyglot" (multi-language).

While testing with eglot, I noticed that my language server was not 
informed of all changes. As far as I can see, eglot spawns a language 
server per file format (major mode) and then only informs the language 
server of events (didOpen/didChange) for that major mode. This happens 
even through it is exactly the same command + args for both major modes.

The next result is that my language server when used via emacs + eglot, 
requires the user to save a file before the language server can "see" 
the effect when you are working in a different file.

I was a bit in doubt whether the spec accounted for polyglot language 
servers, so I asked in the LSP github for clarification. They made the 
argument that a language server should be able to see events for other 
file formats and suggested that I contacted you (the eglot maintainers) 
about this 
(https://github.com/microsoft/language-server-protocol/issues/1964). 
They acknowledged this was implicit and then listed the two key features 
they saw as supporting this implicit requirement (both of them boils 
down to DocumentSelector as I read it).

I tried a static registration with a DocumentSelector on `**/debian/*` 
(I think it was hover docs, though it might have been completion), but 
my debugging suggested that my instances did not get didOpen/didChange 
events "across" the file formats even with this registration.

Can we work towards a solution where I can ask eglot to provide 
didOpen/didChange events across formats? :)

Best regards,
Niels





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-12 11:33 bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers Niels Thykier
@ 2024-07-13  6:15 ` Eli Zaretskii
  2024-07-13 16:29   ` João Távora
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2024-07-13  6:15 UTC (permalink / raw)
  To: Niels Thykier, João Távora; +Cc: 72088

> Date: Fri, 12 Jul 2024 13:33:56 +0200
> From: Niels Thykier <niels@thykier.net>
> 
> Hi
> 
> Thanks for providing LSP support in emacs. :)
> 
> 
> For reference, I used emacs 29.4 from Debian when I tested. If this 
> feature has changed in emacs 30, then I would not have seen it yet (I am 
> not tracking emacs/eglot development a lot).
> 
> 
> I am working on a language server for Debian packaging (called 
> `debputy`). The Debian packaging files consists of several different 
> file formats with cross references between the formats. As a 
> consequence, I built my language server to be a "polyglot" (multi-language).
> 
> While testing with eglot, I noticed that my language server was not 
> informed of all changes. As far as I can see, eglot spawns a language 
> server per file format (major mode) and then only informs the language 
> server of events (didOpen/didChange) for that major mode. This happens 
> even through it is exactly the same command + args for both major modes.
> 
> The next result is that my language server when used via emacs + eglot, 
> requires the user to save a file before the language server can "see" 
> the effect when you are working in a different file.
> 
> I was a bit in doubt whether the spec accounted for polyglot language 
> servers, so I asked in the LSP github for clarification. They made the 
> argument that a language server should be able to see events for other 
> file formats and suggested that I contacted you (the eglot maintainers) 
> about this 
> (https://github.com/microsoft/language-server-protocol/issues/1964). 
> They acknowledged this was implicit and then listed the two key features 
> they saw as supporting this implicit requirement (both of them boils 
> down to DocumentSelector as I read it).
> 
> I tried a static registration with a DocumentSelector on `**/debian/*` 
> (I think it was hover docs, though it might have been completion), but 
> my debugging suggested that my instances did not get didOpen/didChange 
> events "across" the file formats even with this registration.
> 
> Can we work towards a solution where I can ask eglot to provide 
> didOpen/didChange events across formats? :)

João, any comments or suggestions?





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-13  6:15 ` Eli Zaretskii
@ 2024-07-13 16:29   ` João Távora
  2024-07-14  4:37     ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: João Távora @ 2024-07-13 16:29 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Niels Thykier, 72088

[-- Attachment #1: Type: text/plain, Size: 2601 bytes --]

Major modes in eglot-server-programs don't work? What was attempted? I
couldn't understand. Look at existing examples, like C/C++ file types being
handled by the same server, and others.

João

On Sat, Jul 13, 2024, 07:16 Eli Zaretskii <eliz@gnu.org> wrote:

> > Date: Fri, 12 Jul 2024 13:33:56 +0200
> > From: Niels Thykier <niels@thykier.net>
> >
> > Hi
> >
> > Thanks for providing LSP support in emacs. :)
> >
> >
> > For reference, I used emacs 29.4 from Debian when I tested. If this
> > feature has changed in emacs 30, then I would not have seen it yet (I am
> > not tracking emacs/eglot development a lot).
> >
> >
> > I am working on a language server for Debian packaging (called
> > `debputy`). The Debian packaging files consists of several different
> > file formats with cross references between the formats. As a
> > consequence, I built my language server to be a "polyglot"
> (multi-language).
> >
> > While testing with eglot, I noticed that my language server was not
> > informed of all changes. As far as I can see, eglot spawns a language
> > server per file format (major mode) and then only informs the language
> > server of events (didOpen/didChange) for that major mode. This happens
> > even through it is exactly the same command + args for both major modes.
> >
> > The next result is that my language server when used via emacs + eglot,
> > requires the user to save a file before the language server can "see"
> > the effect when you are working in a different file.
> >
> > I was a bit in doubt whether the spec accounted for polyglot language
> > servers, so I asked in the LSP github for clarification. They made the
> > argument that a language server should be able to see events for other
> > file formats and suggested that I contacted you (the eglot maintainers)
> > about this
> > (https://github.com/microsoft/language-server-protocol/issues/1964).
> > They acknowledged this was implicit and then listed the two key features
> > they saw as supporting this implicit requirement (both of them boils
> > down to DocumentSelector as I read it).
> >
> > I tried a static registration with a DocumentSelector on `**/debian/*`
> > (I think it was hover docs, though it might have been completion), but
> > my debugging suggested that my instances did not get didOpen/didChange
> > events "across" the file formats even with this registration.
> >
> > Can we work towards a solution where I can ask eglot to provide
> > didOpen/didChange events across formats? :)
>
> João, any comments or suggestions?
>

[-- Attachment #2: Type: text/html, Size: 3410 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-13 16:29   ` João Távora
@ 2024-07-14  4:37     ` Eli Zaretskii
  2024-07-14  7:31       ` Niels Thykier
  2024-07-14  8:01       ` João Távora
  0 siblings, 2 replies; 12+ messages in thread
From: Eli Zaretskii @ 2024-07-14  4:37 UTC (permalink / raw)
  To: João Távora; +Cc: niels, 72088

> From: João Távora <joaotavora@gmail.com>
> Date: Sat, 13 Jul 2024 17:29:04 +0100
> Cc: Niels Thykier <niels@thykier.net>, 72088@debbugs.gnu.org
> 
> Major modes in eglot-server-programs don't work? What was attempted? I couldn't understand. Look at
> existing examples, like C/C++ file types being handled by the same server, and others.

AFAIU, the OP tried to use the same LSP server for several languages,
or something like that.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14  4:37     ` Eli Zaretskii
@ 2024-07-14  7:31       ` Niels Thykier
  2024-07-14  8:01       ` João Távora
  1 sibling, 0 replies; 12+ messages in thread
From: Niels Thykier @ 2024-07-14  7:31 UTC (permalink / raw)
  To: Eli Zaretskii, João Távora; +Cc: 72088

Eli Zaretskii:
>> From: João Távora <joaotavora@gmail.com>
>> Date: Sat, 13 Jul 2024 17:29:04 +0100
>> Cc: Niels Thykier <niels@thykier.net>, 72088@debbugs.gnu.org
>>
>> Major modes in eglot-server-programs don't work? What was attempted? I couldn't understand. Look at
>> existing examples, like C/C++ file types being handled by the same server, and others.
> 
> AFAIU, the OP tried to use the same LSP server for several languages,
> or something like that.

Correct, I am using the same LSP server for several languages (major-modes).

I observe that eglot spawns an instance *per* major mode even though I 
use exactly the same definition in eglot-server-programs. Additionally, 
each instance only receives "didOpen" and "didChange" events for the 
given mode they were spawned for.

 From my PoV, ideally, it would be possible to ask eglot to spawn only 
one instance across all major modes and it would receive "didOpen" and 
"didChange" events for all the modes that it was registered for. Like 
the singleton pattern from programming languages.


Alternatively, I think it would also be possible to have an instance per 
major mode as long as they receive the "didOpen" and "didChange" for all 
relevant modes (that is, eglot sends the same "didOpen"/"didChange" 
event to multiple servers). The downside of the later approach is that 
the same computations happen twice and is sent back to eglot that then 
has deal with the duplication. Notably push diagnostics would then 
happen once per server per major mode.


Note since I am the author of the language server, I am looking for a 
way for eglot manage the life-cycle of the language server. Asking my 
consumers to manually start and stop the language server would make it a 
second-class language server at best.

Best regards,
Niels






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14  4:37     ` Eli Zaretskii
  2024-07-14  7:31       ` Niels Thykier
@ 2024-07-14  8:01       ` João Távora
  2024-07-14  9:36         ` Niels Thykier
  1 sibling, 1 reply; 12+ messages in thread
From: João Távora @ 2024-07-14  8:01 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Niels Thykier, 72088

[-- Attachment #1: Type: text/plain, Size: 685 bytes --]

On Sun, Jul 14, 2024, 05:37 Eli Zaretskii <eliz@gnu.org> wrote:

> AFAIU, the OP tried to use the same LSP server for several languages,
> or something like that.
>

Yes, but how? What are the major modes in question? What information was
added to eglot-server-programs, if any? Are the two different files in
question in the same project?The OP consistently conflates file type and
major mode, which is not always true. A simple example of a LSP server that
manages different files in (slightly) different major modes (as long as in
the same project) is clangd. But there are a few others, I think. The
docstring of eglot-server-programs should be studied.

João

>

[-- Attachment #2: Type: text/html, Size: 1230 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14  8:01       ` João Távora
@ 2024-07-14  9:36         ` Niels Thykier
  2024-07-14  9:46           ` Niels Thykier
  2024-07-14  9:48           ` João Távora
  0 siblings, 2 replies; 12+ messages in thread
From: Niels Thykier @ 2024-07-14  9:36 UTC (permalink / raw)
  To: João Távora, Eli Zaretskii; +Cc: 72088

João Távora:
> On Sun, Jul 14, 2024, 05:37 Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> AFAIU, the OP tried to use the same LSP server for several languages,
>> or something like that.
>>
> 
> Yes, but how? What are the major modes in question? What information was
> added to eglot-server-programs, if any?
Hi,

The `eglot-server-programs` are defined as:

```
(with-eval-after-load 'eglot
     (add-to-list 'eglot-server-programs
             '(debian-control-mode . ("debputy" "lsp" "server")))
     (add-to-list 'eglot-server-programs
             '(debian-changelog-mode . ("debputy" "lsp" "server")))
     (add-to-list 'eglot-server-programs
             '(debian-copyright-mode . ("debputy" "lsp" "server")))
     (add-to-list 'eglot-server-programs
             '(makefile-gmake-mode . ("debputy" "lsp" "server")))
     (add-to-list 'eglot-server-programs
             '(yaml-mode . ("debputy" "lsp" "server")))
     (add-to-list 'eglot-server-programs
             '(debian-autopkgtest-control-mode . ("debputy" "lsp" 
"server")))
)
```

Concrete case I was debugging was a `debian/control` file 
(`debian-control-mode`) + a `debian/rules` file (`makefile-qmake-mode`).

The "debian-X" modes is coming from 
https://salsa.debian.org/emacsen-team/dpkg-dev-el. I did not remember 
actively installing the `makefile-qmake-mode`, so I assume it is bundled 
with emacs. The "yaml-mode" is elpa-yaml-mode 
(https://github.com/yoshiki/yaml-mode).

Note: The `makefile-gmake-mode` and `yaml-mode` registrations would 
ideally be restricted to specific file names (such as `debian/rules` and 
`debian/debputy.manifest`). Mentioning it mostly for the context (I have 
not looked into how to do that at an eglot level yet).

> Are the two different files in question in the same project?

Yes, as far as I can tell, eglot considers them to be in the same 
project. Concretely, the files are both in a .git repo and eglot reports 
the git root dir as a workspace folder to the server.

> The OP consistently conflates file type and
> major mode, which is not always true.

Apologies for that. The language server in question works with at least 
4 distinct syntactical formats (YAML, make, the debian changelog format 
plus 3 distinct deb822 files). You are correct that the 3 deb822 files 
do have different major modes despite being the same file format at a 
syntactical level.

Nevertheless, in the concrete case, the problem appears between two 
distinct file formats *and* major-modes.

> A simple example of a LSP server that
> manages different files in (slightly) different major modes (as long as in
> the same project) is clangd. But there are a few others, I think. The
> docstring of eglot-server-programs should be studied.
> 
> João
> 
>>
> 

I read through 
https://www.gnu.org/software/emacs/manual/html_node/eglot/Setting-Up-LSP-Servers.html 
and I do not see anything here that decides how to control whether one 
or two instances per project will be spawned.

Best regards,
Niels








^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14  9:36         ` Niels Thykier
@ 2024-07-14  9:46           ` Niels Thykier
  2024-07-14 10:30             ` Niels Thykier
  2024-07-14  9:48           ` João Távora
  1 sibling, 1 reply; 12+ messages in thread
From: Niels Thykier @ 2024-07-14  9:46 UTC (permalink / raw)
  To: João Távora, Eli Zaretskii; +Cc: 72088

Niels Thykier:
> João Távora:
>> On Sun, Jul 14, 2024, 05:37 Eli Zaretskii <eliz@gnu.org> wrote:
>>
>>> AFAIU, the OP tried to use the same LSP server for several languages,
>>> or something like that.
>>>
>>
>> Yes, but how? What are the major modes in question? What information was
>> added to eglot-server-programs, if any?
> Hi,
> 
> The `eglot-server-programs` are defined as:
> 
> ```
> (with-eval-after-load 'eglot
>      (add-to-list 'eglot-server-programs
>              '(debian-control-mode . ("debputy" "lsp" "server")))
>      (add-to-list 'eglot-server-programs
>              '(debian-changelog-mode . ("debputy" "lsp" "server")))
>      (add-to-list 'eglot-server-programs
>              '(debian-copyright-mode . ("debputy" "lsp" "server")))
>      (add-to-list 'eglot-server-programs
>              '(makefile-gmake-mode . ("debputy" "lsp" "server")))
>      (add-to-list 'eglot-server-programs
>              '(yaml-mode . ("debputy" "lsp" "server")))
>      (add-to-list 'eglot-server-programs
>              '(debian-autopkgtest-control-mode . ("debputy" "lsp" 
> "server")))
> )
> ```
> 
> [...]
> 
> I read through 
> https://www.gnu.org/software/emacs/manual/html_node/eglot/Setting-Up-LSP-Servers.html and I do not see anything here that decides how to control whether one or two instances per project will be spawned.
> 
> Best regards,
> Niels
> 

No, I think I see it now.

I think I have overlooked this paragraph:

"""
The major-mode of the alist elements can be either a symbol of an Emacs 
major mode or a list of the form (mode :language-id id), with mode being 
a major-mode symbol and id a string that identifies the language to the 
server (if Eglot cannot by itself convert the major-mode to the language 
identifier string required by the server). In addition, major-mode can 
be a list of several major modes specified in one of the above forms – 
this means a running instance of the associated server is responsible 
for files of multiple major modes or languages in the project.
"""

I will retry with this in mind and see if that solves the problem. If it 
does, I will close this bug.

Best regards,
Niels






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14  9:36         ` Niels Thykier
  2024-07-14  9:46           ` Niels Thykier
@ 2024-07-14  9:48           ` João Távora
  2024-07-14 12:01             ` Niels Thykier
  1 sibling, 1 reply; 12+ messages in thread
From: João Távora @ 2024-07-14  9:48 UTC (permalink / raw)
  To: Niels Thykier; +Cc: Eli Zaretskii, 72088

[-- Attachment #1: Type: text/plain, Size: 876 bytes --]

On Sun, Jul 14, 2024, 10:36 Niels Thykier <niels@thykier.net> wrote:

> I read through
>
> https://www.gnu.org/software/emacs/manual/html_node/eglot/Setting-Up-LSP-Servers.html
> and I do not see anything here that decides how to control whether one
> or two instances per project will be spawned.
>

In that section, did you happen to read this sentence?

"In addition, major-mode can be a list of several major modes specified in
one of the above forms – this means a running instance of the associated
server is responsible for files of multiple major modes or languages in the
project. "

If so, how do you comprehend or interpret it? Maybe it could be clarified.
Regardless, the default value of the eglot-server-programs variable that
ships with Emacs has several examples that make use of this feature, so it
may be worth studying those.

João

[-- Attachment #2: Type: text/html, Size: 1532 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14  9:46           ` Niels Thykier
@ 2024-07-14 10:30             ` Niels Thykier
  0 siblings, 0 replies; 12+ messages in thread
From: Niels Thykier @ 2024-07-14 10:30 UTC (permalink / raw)
  To: João Távora, Eli Zaretskii; +Cc: 72088-done

Niels Thykier:
> [...]
> 
> No, I think I see it now.
> 
> I think I have overlooked this paragraph:
> 
> """
> The major-mode of the alist elements can be either a symbol of an Emacs 
> major mode or a list of the form (mode :language-id id), with mode being 
> a major-mode symbol and id a string that identifies the language to the 
> server (if Eglot cannot by itself convert the major-mode to the language 
> identifier string required by the server). In addition, major-mode can 
> be a list of several major modes specified in one of the above forms – 
> this means a running instance of the associated server is responsible 
> for files of multiple major modes or languages in the project.
> """
> 
> I will retry with this in mind and see if that solves the problem. If it 
> does, I will close this bug.
> 
> Best regards,
> Niels
> 

Indeed, the list form of `major-mode` works, closing.

Thanks for the hint about `clang`, which gave me the concrete syntax I 
needed.

Best regards,
Niels






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14  9:48           ` João Távora
@ 2024-07-14 12:01             ` Niels Thykier
  2024-07-14 13:21               ` João Távora
  0 siblings, 1 reply; 12+ messages in thread
From: Niels Thykier @ 2024-07-14 12:01 UTC (permalink / raw)
  To: João Távora; +Cc: Eli Zaretskii, 72088

João Távora:
> On Sun, Jul 14, 2024, 10:36 Niels Thykier <niels@thykier.net> wrote:
> 
>> I read through
>>
>> https://www.gnu.org/software/emacs/manual/html_node/eglot/Setting-Up-LSP-Servers.html
>> and I do not see anything here that decides how to control whether one
>> or two instances per project will be spawned.
>>
> 
> In that section, did you happen to read this sentence?
> 
> "In addition, major-mode can be a list of several major modes specified in
> one of the above forms – this means a running instance of the associated
> server is responsible for files of multiple major modes or languages in the
> project. "
> 
> If so, how do you comprehend or interpret it? Maybe it could be clarified.
> Regardless, the default value of the eglot-server-programs variable that
> ships with Emacs has several examples that make use of this feature, so it
> may be worth studying those.
> 
> João
> 

I missed it entirely.

My recommendations would one or more of the following:

  1 Use a more verbose variant of the `major-mode` placeholder, like
    `(major-mode-or-modes . server)`. This would have prompted me
    to not assume `major-mode` was just a single major-mode.

  2 Provide an example featuring multiple modes in addition the existing
    examples. This example could also show off the `:language-id`
    feature.

  3 Provide a howto guide for adding a new LSP server configuration
    that explicitly featured the distinction between single mode vs.
    multi-mode LSP servers.
    (Note "howto guide" is specifically the "howto guide" from
     https://docs.divio.com/documentation-system/)

For me, either 1+2 would definitely have worked. The third option is a 
question of which kind of audience you want to optimize for. Personally, 
I find it difficult myself to figure out what deserves a howto guide, so 
I can totally understand if you pass on doing one of those.



A bit more on what happened on my end:


I think a key aspect of this problem is that I was trying to quickly 
solve a problem. Namely getting my prototype to work and all I could 
find was reference documentation, which is tailored for solving a 
different type of documentation problem than what I ideally needed 
(Compare problem-oriented vs information-oriented on 
https://docs.divio.com/documentation-system/).
   Since I know the documentation has the "wrong focus" for the thing I 
want to do, I scan much more aggressively for examples and highlighted 
words that looks like definitions and then retrace from there if 
relevant. This is a common issue for many projects including some of my 
own that they only provide one or two types of documentation (with 
reference documentation being the most common type of documentation), 
which has made me adopt this reading style.


The use of `major-mode` in the documentation had me assume that it was 
one major mode at the time which works out of the box with no warnings. 
The moment I saw: "The value of the variable is an alist, whose elements 
are of the form (major-mode . server)", I was like "Got it, one major 
mode + a server definition. Where do I find the definition of `server`? 
Next line talks about the major-mode and I got what is. I need the 
server part, oh I see the highlighted `(programs args)` below, so skip 
to that. Oh, there are examples in the bottom. Ok, so 5x the first 
example that with a bit of replacements" and I had some code that worked 
and I was back to working on my language server. From there it took me 
several months until the server reached maturity enough to provide 
features where this mistake got in the way.


As mentioned, an example that might have worked would have been:

```
;; Polyglot LSP server example. The instance is reused
;; in a given project for all the listed modes.
(with-eval-after-load 'eglot
   (add-to-list 'eglot-server-programs
                '((
                   c-mode
                   (cpp-mode :language-id "c++"))
                   . ("custom-c-lsp" "--stdio"))))
```


In fact, it would have been nice to have this example, because I spent 
30 minutes fighting with the elisp syntax figuring out the syntax. After 
that, I spent 15 minutes trying to figure out why my `eglot-ensure` 
configuration stopped working (as you can probably tell, lisp/elisp is 
not really not my jam).

Hope that helped.

Best regards,
Niels






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
  2024-07-14 12:01             ` Niels Thykier
@ 2024-07-14 13:21               ` João Távora
  0 siblings, 0 replies; 12+ messages in thread
From: João Távora @ 2024-07-14 13:21 UTC (permalink / raw)
  To: Niels Thykier; +Cc: Eli Zaretskii, 72088

[-- Attachment #1: Type: text/plain, Size: 516 bytes --]

On Sun, Jul 14, 2024, 13:01 Niels Thykier <niels@thykier.net> wrote:

This is too long for me to address, but Eglot's documentation (and all of
Eglot) follows the simple principle of making the simple common thing easy
and the complex uncommon thing possible. Anyway, when you spent a little
bit more time reading, you found the paragraph even before I pointed it out
or to you, which I count as very good. If you want to submit a patch with
that example, it's welcome so long as it integrates into the current doc.

[-- Attachment #2: Type: text/html, Size: 764 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-07-14 13:21 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-12 11:33 bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers Niels Thykier
2024-07-13  6:15 ` Eli Zaretskii
2024-07-13 16:29   ` João Távora
2024-07-14  4:37     ` Eli Zaretskii
2024-07-14  7:31       ` Niels Thykier
2024-07-14  8:01       ` João Távora
2024-07-14  9:36         ` Niels Thykier
2024-07-14  9:46           ` Niels Thykier
2024-07-14 10:30             ` Niels Thykier
2024-07-14  9:48           ` João Távora
2024-07-14 12:01             ` Niels Thykier
2024-07-14 13:21               ` João Távora

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).