Skip to content

Commit 0ac9826

Browse files
authored
(fix) don't provide version for edits (#943)
Setting it to 0 is against the spec since clients may reject the edits then. Set it to null instead. #851
1 parent af88239 commit 0ac9826

File tree

7 files changed

+63
-47
lines changed

7 files changed

+63
-47
lines changed

packages/language-server/src/plugins/svelte/features/getCodeActions/getQuickfixes.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import {
66
CodeActionKind,
77
Diagnostic,
88
DiagnosticSeverity,
9+
OptionalVersionedTextDocumentIdentifier,
910
Position,
1011
TextDocumentEdit,
11-
TextEdit,
12-
VersionedTextDocumentIdentifier
12+
TextEdit
1313
} from 'vscode-languageserver';
1414
import { mapObjWithRangeToOriginal, offsetAt, positionAt } from '../../../../lib/documents';
1515
import { pathToUrl } from '../../../../utils';
@@ -40,9 +40,9 @@ async function createQuickfixAction(
4040
svelteDoc: SvelteDocument,
4141
ast: Ast
4242
): Promise<CodeAction> {
43-
const textDocument = VersionedTextDocumentIdentifier.create(
43+
const textDocument = OptionalVersionedTextDocumentIdentifier.create(
4444
pathToUrl(svelteDoc.getFilePath()),
45-
svelteDoc.version
45+
null
4646
);
4747

4848
return CodeAction.create(

packages/language-server/src/plugins/svelte/features/getCodeActions/getRefactorings.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as path from 'path';
22
import {
33
CreateFile,
4+
OptionalVersionedTextDocumentIdentifier,
45
Position,
56
Range,
67
TextDocumentEdit,
78
TextEdit,
8-
VersionedTextDocumentIdentifier,
99
WorkspaceEdit
1010
} from 'vscode-languageserver';
1111
import { isRangeInTag, TagInformation, updateRelativeImport } from '../../../../lib/documents';
@@ -54,10 +54,13 @@ async function executeExtractComponentCommand(
5454

5555
return <WorkspaceEdit>{
5656
documentChanges: [
57-
TextDocumentEdit.create(VersionedTextDocumentIdentifier.create(svelteDoc.uri, 0), [
58-
TextEdit.replace(range, `<${componentName}></${componentName}>`),
59-
createComponentImportTextEdit()
60-
]),
57+
TextDocumentEdit.create(
58+
OptionalVersionedTextDocumentIdentifier.create(svelteDoc.uri, null),
59+
[
60+
TextEdit.replace(range, `<${componentName}></${componentName}>`),
61+
createComponentImportTextEdit()
62+
]
63+
),
6164
CreateFile.create(newFileUri, { overwrite: true }),
6265
createNewFileEdit()
6366
]
@@ -91,9 +94,10 @@ async function executeExtractComponentCommand(
9194
.map((tag) => tag.text)
9295
.join('');
9396

94-
return TextDocumentEdit.create(VersionedTextDocumentIdentifier.create(newFileUri, 0), [
95-
TextEdit.insert(Position.create(0, 0), newText)
96-
]);
97+
return TextDocumentEdit.create(
98+
OptionalVersionedTextDocumentIdentifier.create(newFileUri, null),
99+
[TextEdit.insert(Position.create(0, 0), newText)]
100+
);
97101

98102
function getTemplate() {
99103
const startOffset = svelteDoc.offsetAt(range.start);

packages/language-server/src/plugins/typescript/features/CodeActionsProvider.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import {
22
CodeAction,
33
CodeActionContext,
44
CodeActionKind,
5+
OptionalVersionedTextDocumentIdentifier,
56
Range,
67
TextDocumentEdit,
78
TextEdit,
8-
VersionedTextDocumentIdentifier,
99
WorkspaceEdit
1010
} from 'vscode-languageserver';
1111
import {
@@ -82,7 +82,7 @@ export class CodeActionsProviderImpl implements CodeActionsProvider {
8282
changes.map(async (change) => {
8383
// Organize Imports will only affect the current file, so no need to check the file path
8484
return TextDocumentEdit.create(
85-
VersionedTextDocumentIdentifier.create(document.url, 0),
85+
OptionalVersionedTextDocumentIdentifier.create(document.url, null),
8686
change.textChanges.map((edit) => {
8787
const range = this.checkRemoveImportCodeActionRange(
8888
edit,
@@ -169,7 +169,10 @@ export class CodeActionsProviderImpl implements CodeActionsProvider {
169169
fix.changes.map(async (change) => {
170170
const { snapshot, fragment } = await docs.retrieve(change.fileName);
171171
return TextDocumentEdit.create(
172-
VersionedTextDocumentIdentifier.create(pathToUrl(change.fileName), 0),
172+
OptionalVersionedTextDocumentIdentifier.create(
173+
pathToUrl(change.fileName),
174+
null
175+
),
173176
change.textChanges
174177
.map((edit) => {
175178
if (
@@ -362,7 +365,7 @@ export class CodeActionsProviderImpl implements CodeActionsProvider {
362365

363366
const documentChanges = edits?.edits.map((edit) =>
364367
TextDocumentEdit.create(
365-
VersionedTextDocumentIdentifier.create(document.uri, 0),
368+
OptionalVersionedTextDocumentIdentifier.create(document.uri, null),
366369
edit.textChanges.map((edit) => {
367370
const range = mapRangeToOriginal(fragment, convertRange(fragment, edit.span));
368371

packages/language-server/src/plugins/typescript/features/UpdateImportsProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
2+
OptionalVersionedTextDocumentIdentifier,
23
TextDocumentEdit,
34
TextEdit,
4-
VersionedTextDocumentIdentifier,
55
WorkspaceEdit
66
} from 'vscode-languageserver';
77
import { mapRangeToOriginal } from '../../../lib/documents';
@@ -43,7 +43,7 @@ export class UpdateImportsProviderImpl implements UpdateImportsProvider {
4343
const fragment = await docs.retrieveFragment(change.fileName);
4444

4545
return TextDocumentEdit.create(
46-
VersionedTextDocumentIdentifier.create(fragment.getURL(), 0),
46+
OptionalVersionedTextDocumentIdentifier.create(fragment.getURL(), null),
4747
change.textChanges.map((edit) => {
4848
const range = mapRangeToOriginal(
4949
fragment,

packages/language-server/test/plugins/svelte/features/getCodeAction.test.ts

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
Range,
1212
TextDocumentEdit,
1313
TextEdit,
14-
VersionedTextDocumentIdentifier,
14+
OptionalVersionedTextDocumentIdentifier,
1515
WorkspaceEdit
1616
} from 'vscode-languageserver';
1717
import { Document } from '../../../../src/lib/documents';
@@ -144,7 +144,7 @@ describe('SveltePlugin#getCodeAction', () => {
144144
],
145145
textDocument: {
146146
uri: getUri(svelteIgnoreCodeAction),
147-
version: 0
147+
version: null
148148
}
149149
}
150150
]
@@ -195,7 +195,7 @@ describe('SveltePlugin#getCodeAction', () => {
195195
],
196196
textDocument: {
197197
uri: getUri(svelteIgnoreCodeAction),
198-
version: 0
198+
version: null
199199
}
200200
}
201201
]
@@ -246,7 +246,7 @@ describe('SveltePlugin#getCodeAction', () => {
246246
],
247247
textDocument: {
248248
uri: getUri(svelteIgnoreCodeAction),
249-
version: 0
249+
version: null
250250
}
251251
}
252252
]
@@ -289,16 +289,22 @@ describe('SveltePlugin#getCodeAction', () => {
289289
const result = await extractComponent(path, range);
290290
assert.deepStrictEqual(result, <WorkspaceEdit>{
291291
documentChanges: [
292-
TextDocumentEdit.create(VersionedTextDocumentIdentifier.create('someUrl', 0), [
293-
TextEdit.replace(range, '<NewComp></NewComp>'),
294-
TextEdit.insert(
295-
doc.script?.startPos || Position.create(0, 0),
296-
"\n import NewComp from './NewComp.svelte';\n"
297-
)
298-
]),
292+
TextDocumentEdit.create(
293+
OptionalVersionedTextDocumentIdentifier.create('someUrl', null),
294+
[
295+
TextEdit.replace(range, '<NewComp></NewComp>'),
296+
TextEdit.insert(
297+
doc.script?.startPos || Position.create(0, 0),
298+
"\n import NewComp from './NewComp.svelte';\n"
299+
)
300+
]
301+
),
299302
CreateFile.create('file:///NewComp.svelte', { overwrite: true }),
300303
TextDocumentEdit.create(
301-
VersionedTextDocumentIdentifier.create('file:///NewComp.svelte', 0),
304+
OptionalVersionedTextDocumentIdentifier.create(
305+
'file:///NewComp.svelte',
306+
null
307+
),
302308
[
303309
TextEdit.insert(
304310
Position.create(0, 0),
@@ -357,7 +363,7 @@ describe('SveltePlugin#getCodeAction', () => {
357363
assert.deepStrictEqual(result, <WorkspaceEdit>{
358364
documentChanges: [
359365
TextDocumentEdit.create(
360-
VersionedTextDocumentIdentifier.create(existingFileUri, 0),
366+
OptionalVersionedTextDocumentIdentifier.create(existingFileUri, null),
361367
[
362368
TextEdit.replace(range, '<NewComp></NewComp>'),
363369
TextEdit.insert(
@@ -367,17 +373,20 @@ describe('SveltePlugin#getCodeAction', () => {
367373
]
368374
),
369375
CreateFile.create(newFileUri, { overwrite: true }),
370-
TextDocumentEdit.create(VersionedTextDocumentIdentifier.create(newFileUri, 0), [
371-
TextEdit.insert(
372-
Position.create(0, 0),
373-
`<script>
376+
TextDocumentEdit.create(
377+
OptionalVersionedTextDocumentIdentifier.create(newFileUri, null),
378+
[
379+
TextEdit.insert(
380+
Position.create(0, 0),
381+
`<script>
374382
import OtherComponent from './path/OtherComponent.svelte';
375383
import {test} from './test';
376384
</script>\n\ntoExtract\n\n<style>
377385
@import './path/style.css';
378386
</style>\n\n`
379-
)
380-
])
387+
)
388+
]
389+
)
381390
]
382391
});
383392
});

packages/language-server/test/plugins/typescript/features/CodeActionsProvider.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ describe('CodeActionsProvider', () => {
8484
],
8585
textDocument: {
8686
uri: getUri('codeactions.svelte'),
87-
version: 0
87+
version: null
8888
}
8989
}
9090
]
@@ -141,7 +141,7 @@ describe('CodeActionsProvider', () => {
141141
],
142142
textDocument: {
143143
uri: getUri('codeactions.svelte'),
144-
version: 0
144+
version: null
145145
}
146146
}
147147
]
@@ -230,7 +230,7 @@ describe('CodeActionsProvider', () => {
230230
],
231231
textDocument: {
232232
uri: getUri('codeactions.svelte'),
233-
version: 0
233+
version: null
234234
}
235235
}
236236
]
@@ -305,7 +305,7 @@ describe('CodeActionsProvider', () => {
305305
],
306306
textDocument: {
307307
uri: getUri('organize-imports-with-module.svelte'),
308-
version: 0
308+
version: null
309309
}
310310
}
311311
]
@@ -393,7 +393,7 @@ describe('CodeActionsProvider', () => {
393393
],
394394
textDocument: {
395395
uri: getUri('organize-imports-module-store.svelte'),
396-
version: 0
396+
version: null
397397
}
398398
}
399399
]
@@ -487,7 +487,7 @@ describe('CodeActionsProvider', () => {
487487
],
488488
textDocument: {
489489
uri: getUri('codeactions.svelte'),
490-
version: 0
490+
version: null
491491
}
492492
}
493493
]
@@ -584,7 +584,7 @@ describe('CodeActionsProvider', () => {
584584
],
585585
textDocument: {
586586
uri: getUri('codeactions.svelte'),
587-
version: 0
587+
version: null
588588
}
589589
}
590590
]

packages/language-server/test/plugins/typescript/features/UpdateImportsProvider.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { join } from 'path';
33
import sinon from 'sinon';
44
import ts from 'typescript';
55
import {
6+
OptionalVersionedTextDocumentIdentifier,
67
Position,
78
Range,
89
TextDocumentEdit,
9-
TextEdit,
10-
VersionedTextDocumentIdentifier
10+
TextEdit
1111
} from 'vscode-languageserver';
1212
import { Document, DocumentManager } from '../../../../src/lib/documents';
1313
import { LSConfigManager } from '../../../../src/ls-config';
@@ -51,7 +51,7 @@ describe('UpdateImportsProviderImpl', () => {
5151
});
5252

5353
assert.deepStrictEqual(workspaceEdit?.documentChanges, [
54-
TextDocumentEdit.create(VersionedTextDocumentIdentifier.create(fileUri, 0), [
54+
TextDocumentEdit.create(OptionalVersionedTextDocumentIdentifier.create(fileUri, null), [
5555
TextEdit.replace(
5656
Range.create(Position.create(1, 17), Position.create(1, 49)),
5757
'./documentation.svelte'

0 commit comments

Comments
 (0)