Page History
...
Code Block |
---|
package de.cau.cs.kieler.kicool.ide.language.server /** * @author really fancy name * */ @Singleton class KiCoolLanguageServerExtension implements ILanguageServerExtension, CommandExtension, ILanguageClientProvider { // fancy extension stuff var KeithLanguageClient client // A language server extension must implement the initialize method, // it is however only called if the extension is registered via a language. // This should never be the case, so this is never called.. override initialize(ILanguageServerAccess access) { this.languageServerAccess = access } // implement ILanguageClientProvider override setLanguageClient(LanguageClient client) { this.client = client as KeithLanguageClient } // implement ILanguageClientProvider override initializegetLanguageClient(ILanguageServerAccess access) { return this.languageServerAccess = accessclient } } |
The CommandExtension defines all commands (requests or notifications) that are send from client to server. An example how this looks like can be seen in the code snippet Example CommandExtension is an example how to define a server side extension interface.
The ILanguageClientProvider should be implemented by an extension that plans to send messages from the server to the client.
This language server extension is provided by a corresponding contribution, which is later used to access it:
...
This defines three json-rpc commands: "keith/kicool/compile", "keith/kicool/show", "keith/kicool/get-systems". These are implemented in KiCoolLanguageServerExtension.
Server Client communication interface
Not only messages from client to server but rather mesages from server client might be needed
Register and calling an extension (on client side)
...