Skip to content

Commit 760d696

Browse files
authored
Fixes #214 by returning LSP conform JSON for prepare rename request (#215)
* Set theme jekyll-theme-hacker * Revert "Set theme jekyll-theme-hacker" This reverts commit 70611bd. * add converter for RangeOrPlaceholderRange in Serializer fixes #214
1 parent a46482a commit 760d696

File tree

5 files changed

+96
-3
lines changed

5 files changed

+96
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using Newtonsoft.Json;
3+
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
4+
using Range = OmniSharp.Extensions.LanguageServer.Protocol.Models.Range;
5+
6+
namespace OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters
7+
{
8+
class RangeOrPlaceholderRangeConverter : JsonConverter<RangeOrPlaceholderRange>
9+
{
10+
public override void WriteJson(JsonWriter writer, RangeOrPlaceholderRange value, JsonSerializer serializer)
11+
{
12+
if (value.IsRange)
13+
{
14+
serializer.Serialize(writer, value.Range);
15+
}
16+
else
17+
{
18+
serializer.Serialize(writer, value.PlaceholderRange);
19+
}
20+
}
21+
22+
public override RangeOrPlaceholderRange ReadJson(JsonReader reader, Type objectType, RangeOrPlaceholderRange existingValue, bool hasExistingValue, JsonSerializer serializer)
23+
{
24+
return new RangeOrPlaceholderRange((Range) null);
25+
}
26+
27+
public override bool CanRead => false;
28+
}
29+
}

src/Protocol/Serialization/Serializer.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4-
using System.Threading;
54
using Newtonsoft.Json;
6-
using OmniSharp.Extensions.JsonRpc;
75
using OmniSharp.Extensions.JsonRpc.Serialization;
8-
using OmniSharp.Extensions.JsonRpc.Serialization.Converters;
96
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
107
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
118
using OmniSharp.Extensions.LanguageServer.Protocol.Serialization.Converters;
@@ -77,6 +74,7 @@ protected override void AddOrReplaceConverters(ICollection<JsonConverter> conver
7774
ReplaceConverter(converters, new WorkspaceEditDocumentChangeConverter());
7875
ReplaceConverter(converters, new ParameterInformationLabelConverter());
7976
ReplaceConverter(converters, new ValueTupleContractResolver<long, long>());
77+
ReplaceConverter(converters, new RangeOrPlaceholderRangeConverter());
8078
base.AddOrReplaceConverters(converters);
8179
}
8280

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using FluentAssertions;
2+
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
3+
using Xunit;
4+
5+
namespace Lsp.Tests.Capabilities.Server
6+
{
7+
public class PrepareRenameTests
8+
{
9+
[Theory, JsonFixture]
10+
public void Range(string expected)
11+
{
12+
var range = new Range(
13+
new Position(1, 2),
14+
new Position(3, 4)
15+
);
16+
17+
var model = new RangeOrPlaceholderRange(range);
18+
19+
var result = Fixture.SerializeObject(model);
20+
21+
result.Should().Be(expected);
22+
}
23+
24+
[Theory, JsonFixture]
25+
public void PlaceholderRange(string expected)
26+
{
27+
var placeholderRange = new PlaceholderRange
28+
{
29+
Range = new Range(
30+
new Position(1, 2),
31+
new Position(3, 4)
32+
),
33+
Placeholder = "placeholder"
34+
};
35+
36+
var model = new RangeOrPlaceholderRange(placeholderRange);
37+
38+
var result = Fixture.SerializeObject(model);
39+
40+
result.Should().Be(expected);
41+
}
42+
}
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"range": {
3+
"start": {
4+
"line": 1,
5+
"character": 2
6+
},
7+
"end": {
8+
"line": 3,
9+
"character": 4
10+
}
11+
},
12+
"placeholder": "placeholder"
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"start": {
3+
"line": 1,
4+
"character": 2
5+
},
6+
"end": {
7+
"line": 3,
8+
"character": 4
9+
}
10+
}

0 commit comments

Comments
 (0)