{
"changes": {},
"documentChanges": [
{
"textDocument": {
"version": 0,
"uri": "file:///C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java"
},
"edits": [
{
"range": {
"start": {
"line": 16,
"character": 47
},
"end": {
"line": 17,
"character": 43
}
},
"newText": "\r\nimport org.eclipse.lsp4xml.services.CodeLensRequest;"
}
]
},
{
"textDocument": {
"version": 0,
"uri": "file:///C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLLanguageService.java"
},
"edits": [
{
"range": {
"start": {
"line": 44,
"character": 42
},
"end": {
"line": 44,
"character": 42
}
},
"newText": "\r\nimport org.eclipse.lsp4xml.dom.XMLCodeLens;"
}
]
},
{
"textDocument": {
"version": 0,
"uri": "file:///C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java"
},
"edits": [
{
"range": {
"start": {
"line": 10,
"character": 8
},
"end": {
"line": 10,
"character": 36
}
},
"newText": "org.eclipse.lsp4xml.dom"
}
]
},
{
"oldUri": "file:///C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java",
"newUri": "file:///C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/dom/XMLCodeLens.java",
"kind": "rename"
}
]
}
I have a WorkspaceEdit as below:
A simplified sample:
{
documentChanges: [
TextEdit to file1,
TextEdit to file2,
TextEdit to file1,
Move file1 to file1New
]
}
A real WorkspaceEdit for apply
Log from the command "Developer: Open Log File... -> Window"
[2019-07-22 17:27:29.179] [renderer11] [debug] _performTextEdits
[{ "resource": { "$mid": 1, "external": "file:///c%3A/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java", "path": "/C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java", "scheme": "file" }, "edits": [{ "text": "\r\nimport org.eclipse.lsp4xml.services.CodeLensRequest;", "range": { "startLineNumber": 17, "startColumn": 48, "endLineNumber": 18, "endColumn": 44 } } ] }, { "resource": { "$mid": 1, "external": "file:///c%3A/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLLanguageService.java", "path": "/C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLLanguageService.java", "scheme": "file" }, "modelVersionId": 3, "edits": [{ "text": "\r\nimport org.eclipse.lsp4xml.dom.XMLCodeLens;", "range": { "startLineNumber": 45, "startColumn": 43, "endLineNumber": 45, "endColumn": 43 } } ] }, { "resource": { "$mid": 1, "external": "file:///c%3A/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java", "path": "/C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java", "scheme": "file" }, "edits": [{ "text": "org.eclipse.lsp4xml.dom", "range": { "startLineNumber": 11, "startColumn": 9, "endLineNumber": 11, "endColumn": 37 } } ] } ][2019-07-22 17:27:29.184] [renderer11] [debug] _performFileEdits
[{ "oldUri": { "$mid": 1, "path": "/C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/services/XMLCodeLens.java", "scheme": "file" }, "newUri": { "$mid": 1, "path": "/C:/Work/Debugger/lsp4xml/org.eclipse.lsp4xml/src/main/java/org/eclipse/lsp4xml/dom/XMLCodeLens.java", "scheme": "file" } } ]The edits are supposed to be applied by order, the text edits for the old file should be applied first, then move to the new file.
But actually the change for file2 is always applied correctly, but sometimes the text changes for file1 don't take effect. Especially when file1 is not opened in VS Code before applying, the text changes for file1 are often dropped. Besides, if i move the same file back and forth, it can be easily reproduced.