Skip to content

Commit 59436d8

Browse files
committed
fix: save document when workspace editor comes from rename files.
Signed-off-by: azerr <azerr@redhat.com>
1 parent 178da07 commit 59436d8

3 files changed

Lines changed: 18 additions & 8 deletions

File tree

src/main/java/com/redhat/devtools/lsp4ij/LSPIJUtils.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -916,11 +916,21 @@ private static int getRightOffsetOfPart(Document document, int offset) {
916916
}
917917

918918
public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit) {
919-
applyWorkspaceEdit(edit, null);
919+
applyWorkspaceEdit(edit, false);
920+
}
921+
922+
public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit, boolean saveDocument) {
923+
applyWorkspaceEdit(edit, null, saveDocument);
920924
}
921925

922926
public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
923927
@Nullable String label) {
928+
applyWorkspaceEdit(edit, label, false);
929+
}
930+
931+
public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
932+
@Nullable String label,
933+
boolean saveDocument) {
924934
if (edit.getDocumentChanges() != null) {
925935
for (Either<TextDocumentEdit, ResourceOperation> change : edit.getDocumentChanges()) {
926936
if (change.isLeft()) {
@@ -929,13 +939,13 @@ public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
929939
if (file != null) {
930940
Document document = getDocument(file);
931941
if (document != null) {
932-
applyEdits(null, document, textDocumentEdit.getEdits(), false);
942+
applyEdits(null, document, textDocumentEdit.getEdits(), saveDocument);
933943
}
934944
}
935945
} else if (change.isRight()) {
936946
ResourceOperation resourceOperation = change.getRight();
937947
if (resourceOperation instanceof CreateFile createFile) {
938-
applyCreateFile(createFile);
948+
applyCreateFile(createFile, saveDocument);
939949
} else if (resourceOperation instanceof DeleteFile deleteFile) {
940950
applyDeleteFile(deleteFile);
941951
} else if (resourceOperation instanceof RenameFile renameFile) {
@@ -957,21 +967,21 @@ public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
957967
if (file != null) {
958968
Document document = getDocument(file);
959969
if (document != null) {
960-
applyEdits(null, document, change.getValue(), false);
970+
applyEdits(null, document, change.getValue(), saveDocument);
961971
}
962972
}
963973
}
964974
}
965975
}
966976

967-
private static void applyCreateFile(CreateFile createFile) {
977+
private static void applyCreateFile(CreateFile createFile, boolean saveDocument) {
968978
VirtualFile targetFile = findResourceFor(createFile.getUri());
969979
if (targetFile != null && createFile.getOptions() != null) {
970980
if (!createFile.getOptions().getIgnoreIfExists()) {
971981
Document document = getDocument(targetFile);
972982
if (document != null) {
973983
TextEdit textEdit = new TextEdit(new Range(toPosition(0, document), toPosition(document.getTextLength(), document)), "");
974-
applyEdits(null, document, Collections.singletonList(textEdit), false);
984+
applyEdits(null, document, Collections.singletonList(textEdit), saveDocument);
975985
}
976986
}
977987
} else {

src/main/java/com/redhat/devtools/lsp4ij/features/files/AbstractLSPFileListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ private static void applyWorkspaceEdit(CompletableFuture<WorkspaceEdit> future)
254254
if (CompletableFutures.isDoneNormally(future)) {
255255
var workspaceEdit = future.getNow(null);
256256
if (workspaceEdit != null) {
257-
LSPIJUtils.applyWorkspaceEdit(workspaceEdit);
257+
LSPIJUtils.applyWorkspaceEdit(workspaceEdit, false);
258258
}
259259
}
260260
}

src/main/java/com/redhat/devtools/lsp4ij/features/rename/LSPRenameRefactoringDialog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ static void doRename(@NotNull LSPRenameParams renameParams,
193193
} else {
194194
// Apply the rename from the LSP WorkspaceEdit list
195195
WriteCommandAction.runWriteCommandAction(psiFile.getProject(), () -> {
196-
workspaceEdits.forEach(workspaceEditData -> LSPIJUtils.applyWorkspaceEdit(workspaceEditData.edit()));
196+
workspaceEdits.forEach(workspaceEditData -> LSPIJUtils.applyWorkspaceEdit(workspaceEditData.edit(), true));
197197

198198
// Update any found external references with the new name
199199
externalReferences.forEach(externalReference -> {

0 commit comments

Comments
 (0)