Skip to content

Commit eb80b88

Browse files
authored
fix: it must be possible to have a nil range to replace all content in the TextDocumentChangeEvent (#43)
1 parent cf7dd73 commit eb80b88

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

Diff for: text.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ type DidSaveTextDocumentParams struct {
8787
// the new text is considered to be the full content of the document.
8888
type TextDocumentContentChangeEvent struct {
8989
// Range is the range of the document that changed.
90-
Range Range `json:"range"`
90+
Range *Range `json:"range,omitempty"`
9191

9292
// RangeLength is the length of the range that got replaced.
9393
RangeLength uint32 `json:"rangeLength,omitempty"`

Diff for: text_test.go

+15-4
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ func TestDidChangeTextDocumentParams(t *testing.T) {
125125
},
126126
ContentChanges: []TextDocumentContentChangeEvent{
127127
{
128-
Range: Range{
128+
Range: &Range{
129129
Start: Position{
130130
Line: 25,
131131
Character: 1,
@@ -267,11 +267,12 @@ func TestTextDocumentContentChangeEvent(t *testing.T) {
267267
t.Parallel()
268268

269269
const (
270-
want = `{"range":{"start":{"line":25,"character":1},"end":{"line":25,"character":3}},"rangeLength":2,"text":"testText"}`
271-
wantInvalid = `{"range":{"start":{"line":2,"character":1},"end":{"line":3,"character":4}},"rangeLength":3,"text":"invalidText"}`
270+
want = `{"range":{"start":{"line":25,"character":1},"end":{"line":25,"character":3}},"rangeLength":2,"text":"testText"}`
271+
wantInvalid = `{"range":{"start":{"line":2,"character":1},"end":{"line":3,"character":4}},"rangeLength":3,"text":"invalidText"}`
272+
wantReplaceAll = `{"text":"replace all"}`
272273
)
273274
wantType := TextDocumentContentChangeEvent{
274-
Range: Range{
275+
Range: &Range{
275276
Start: Position{
276277
Line: 25,
277278
Character: 1,
@@ -284,6 +285,9 @@ func TestTextDocumentContentChangeEvent(t *testing.T) {
284285
RangeLength: 2,
285286
Text: "testText",
286287
}
288+
wantReplaceAllType := TextDocumentContentChangeEvent{
289+
Text: "replace all",
290+
}
287291

288292
t.Run("Marshal", func(t *testing.T) {
289293
tests := []struct {
@@ -307,6 +311,13 @@ func TestTextDocumentContentChangeEvent(t *testing.T) {
307311
wantMarshalErr: false,
308312
wantErr: true,
309313
},
314+
{
315+
name: "ReplaceAll",
316+
field: wantReplaceAllType,
317+
want: wantReplaceAll,
318+
wantMarshalErr: false,
319+
wantErr: false,
320+
},
310321
}
311322
for _, tt := range tests {
312323
tt := tt

0 commit comments

Comments
 (0)