bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#72088: eglot: Segregates language servers in a way that hampers poly


From: Niels Thykier
Subject: bug#72088: eglot: Segregates language servers in a way that hampers polyglot language servers
Date: Fri, 12 Jul 2024 13:33:56 +0200
User-agent: Mozilla Thunderbird

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





reply via email to

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