You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Breaking: Registration Options require Client Capability during creation (#440)
* Breaking: LSP ISerializer interface is now deprecated, and marked obsolete.
* LSP Serializer renamed to LSPSerializer
* Added serialization rules for client
* Ensure code actions are provided properly.
* Updated serialization rules for server
* Started on documentation, fixed ICanHaveData not generating
* Updated DAP to use new source generation as well, next is to source generate 'AllowDerivedRequests'
* Added support for generation with AllowDerivedRequests
* Added source generator caching... yes I know we're not supposed to do this but 3 second intellisense times are unbearable
* Some caching changes and fixes for working in rider
* Added full client capabilities to registration options delegate
Copy file name to clipboardExpand all lines: docs/lsp.md
+13-1
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,19 @@ The goal of this library is to implement [Language Server Protocol](https://micr
4
4
5
5
Included in this library is a full-fidelity `LanguageServer` but also full `LanguageClient` implementation that could be implemented in an editor, but mainly it is used to help make Unit Testing easier, more consistent (and maybe even fun!).
6
6
7
-
# Creating a JsonRpcServer
7
+
# Concepts
8
+
The language server is built oin a few concepts. At it's core is the [MediatR](https://github.com/jbogard/MediatR) library that you will build language specific handlers around. Around that core is a bunch of knowledge of the LSP protocol
9
+
with the goal of making it more ".NET" like and less protocol centric.
10
+
11
+
LSP revolves around features ( eg Completion, Hover, etc ) that define the inputs (request object) the outputs (response object) as well as Client Capabilities and Server Registration Options.
12
+
13
+
## Client Capabilities
14
+
These determine what features are supported by the client, and each has a different set of capabilities. The [specification](https://microsoft.github.io/language-server-protocol/) explains each feature and the requirements of each.
15
+
16
+
## Server Registration Options
17
+
The protocol defines two kinds of registration, static and dynamic. Dynamic registration, when it's supported, allows you to register features with the client on demand. Static registration is returned to the client during the initialization phase that explains what features the server supports. Dynamic and Static registration cannot be mixed. If you register something statically, you cannot register the same thing dynamically, otherwise the client will register both features twice.
18
+
19
+
# Creating a Language Server or Client
8
20
`LanguageServer` or `LanguageClient` can be created through two methods.
0 commit comments