Skip to content

Commit 0074159

Browse files
Merge pull request #84 from OmniSharp/spec/updates
Spec/updates
2 parents 20b3af2 + bd6673c commit 0074159

File tree

80 files changed

+980
-74
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+980
-74
lines changed

sample/SampleServer/TextDocumentHandler.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public void SetCapability(SynchronizationCapability capability)
6666

6767
public async Task Handle(DidOpenTextDocumentParams notification)
6868
{
69+
await Task.Yield();
6970
_router.LogMessage(new LogMessageParams()
7071
{
7172
Type = MessageType.Log,

src/Client/LanguageClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public void Dispose()
157157
/// </summary>
158158
public ClientCapabilities ClientCapabilities { get; } = new ClientCapabilities
159159
{
160-
Workspace = new WorkspaceClientCapabilites
160+
Workspace = new WorkspaceClientCapabilities
161161
{
162162
DidChangeConfiguration = new DidChangeConfigurationCapability
163163
{

src/JsonRpc/IResponseRouter.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ public interface IResponseRouter
77
{
88
void SendNotification<T>(string method, T @params);
99
Task<TResponse> SendRequest<T, TResponse>(string method, T @params);
10+
Task<TResponse> SendRequest<TResponse>(string method);
1011
Task SendRequest<T>(string method, T @params);
1112
TaskCompletionSource<JToken> GetRequest(long id);
1213
}
13-
}
14+
}

src/JsonRpc/ResponseRouter.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,34 @@ public async Task<TResponse> SendRequest<T, TResponse>(string method, T @params)
5454
}
5555
}
5656

57+
public async Task<TResponse> SendRequest<TResponse>(string method)
58+
{
59+
long nextId;
60+
lock (_lock)
61+
{
62+
nextId = _id++;
63+
}
64+
65+
var tcs = new TaskCompletionSource<JToken>();
66+
_requests.TryAdd(nextId, tcs);
67+
68+
_outputHandler.Send(new Client.Request() {
69+
Method = method,
70+
Params = null,
71+
Id = nextId
72+
});
73+
74+
try
75+
{
76+
var result = await tcs.Task;
77+
return result.ToObject<TResponse>(_serializer.JsonSerializer);
78+
}
79+
finally
80+
{
81+
_requests.TryRemove(nextId, out var _);
82+
}
83+
}
84+
5785
public async Task SendRequest<T>(string method, T @params)
5886
{
5987
long nextId;

src/Protocol/Client/Capabilities/ClientCapabilities.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class ClientCapabilities
1010
/// <summary>
1111
/// Workspace specific client capabilities.
1212
/// </summary>
13-
public WorkspaceClientCapabilites Workspace { get; set; }
13+
public WorkspaceClientCapabilities Workspace { get; set; }
1414

1515
/// <summary>
1616
/// Text document specific client capabilities.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
2+
{
3+
public class ColorProviderCapability : DynamicCapability, ConnectedCapability<IDocumentColorHandler>, ConnectedCapability<IColorPresentationHandler> {}
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
2+
{
3+
public class DidChangeWorkspaceFolderCapability : DynamicCapability, ConnectedCapability<IDidChangeWorkspaceFoldersHandler> {}
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
2+
{
3+
public class ImplementationCapability : DynamicCapability, ConnectedCapability<IImplementationHandler> {}
4+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using OmniSharp.Extensions.LanguageServer.Protocol.Serialization;
2+
3+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities
4+
{
5+
/// <summary>
6+
/// Capabilities specific to `textDocument/publishDiagnostics`.
7+
/// </summary>
8+
public class PublishDiagnosticsCapability
9+
{
10+
/// <summary>
11+
/// Whether the clients accepts diagnostics with related information.
12+
/// </summary>
13+
[Optional]
14+
public bool RelatedInformation { get; set; }
15+
}
16+
}

src/Protocol/Client/Capabilities/TextDocumentClientCapabilities.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,31 @@ public class TextDocumentClientCapabilities
7777
/// Capabilities specific to the `textDocument/rename`
7878
/// </summary>
7979
public Supports<RenameCapability> Rename { get; set; }
80+
81+
/// <summary>
82+
/// Capabilities specific to the `textDocument/typeDefinition`
83+
///
84+
/// Since 3.6.0
85+
/// </summary>
86+
public Supports<TypeDefinitionCapability> TypeDefinition { get; set; }
87+
88+
/// <summary>
89+
/// Capabilities specific to the `textDocument/implementation`
90+
///
91+
/// Since 3.6.0
92+
/// </summary>
93+
public Supports<ImplementationCapability> Implementation { get; set; }
94+
95+
/// <summary>
96+
/// Capabilities specific to the `textDocument/documentColor` and the `textDocument/colorPresentation` request.
97+
///
98+
/// Since 3.6.0
99+
/// </summary>
100+
public Supports<ColorProviderCapability> ColorProvider { get; set; }
101+
102+
/// <summary>
103+
/// Capabilities specific to `textDocument/publishDiagnostics`.
104+
/// </summary>
105+
public Supports<PublishDiagnosticsCapability> PublishDiagnostics { get; set; }
80106
}
81107
}

0 commit comments

Comments
 (0)