Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions src/main/java/com/redhat/devtools/lsp4ij/LSPIJUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -929,11 +929,21 @@ private static int getRightOffsetOfPart(Document document, int offset) {
}

public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit) {
applyWorkspaceEdit(edit, null);
applyWorkspaceEdit(edit, false);
}

public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit, boolean saveDocument) {
applyWorkspaceEdit(edit, null, saveDocument);
}

public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
@Nullable String label) {
applyWorkspaceEdit(edit, label, false);
}

public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
@Nullable String label,
boolean saveDocument) {
if (edit.getDocumentChanges() != null) {
for (Either<TextDocumentEdit, ResourceOperation> change : edit.getDocumentChanges()) {
if (change.isLeft()) {
Expand All @@ -942,13 +952,13 @@ public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
if (file != null) {
Document document = getDocument(file);
if (document != null) {
applyEdits(null, document, textDocumentEdit.getEdits(), false);
applyEdits(null, document, textDocumentEdit.getEdits(), saveDocument);
}
}
} else if (change.isRight()) {
ResourceOperation resourceOperation = change.getRight();
if (resourceOperation instanceof CreateFile createFile) {
applyCreateFile(createFile);
applyCreateFile(createFile, saveDocument);
} else if (resourceOperation instanceof DeleteFile deleteFile) {
applyDeleteFile(deleteFile);
} else if (resourceOperation instanceof RenameFile renameFile) {
Expand All @@ -970,21 +980,21 @@ public static void applyWorkspaceEdit(@NotNull WorkspaceEdit edit,
if (file != null) {
Document document = getDocument(file);
if (document != null) {
applyEdits(null, document, change.getValue(), false);
applyEdits(null, document, change.getValue(), saveDocument);
}
}
}
}
}

private static void applyCreateFile(CreateFile createFile) {
private static void applyCreateFile(CreateFile createFile, boolean saveDocument) {
VirtualFile targetFile = findResourceFor(createFile.getUri());
if (targetFile != null && createFile.getOptions() != null) {
if (!createFile.getOptions().getIgnoreIfExists()) {
Document document = getDocument(targetFile);
if (document != null) {
TextEdit textEdit = new TextEdit(new Range(toPosition(0, document), toPosition(document.getTextLength(), document)), "");
applyEdits(null, document, Collections.singletonList(textEdit), false);
applyEdits(null, document, Collections.singletonList(textEdit), saveDocument);
}
}
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ private static void applyWorkspaceEdit(CompletableFuture<WorkspaceEdit> future)
if (CompletableFutures.isDoneNormally(future)) {
var workspaceEdit = future.getNow(null);
if (workspaceEdit != null) {
LSPIJUtils.applyWorkspaceEdit(workspaceEdit);
LSPIJUtils.applyWorkspaceEdit(workspaceEdit, false);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ static void doRename(@NotNull LSPRenameParams renameParams,
} else {
// Apply the rename from the LSP WorkspaceEdit list
WriteCommandAction.runWriteCommandAction(psiFile.getProject(), () -> {
workspaceEdits.forEach(workspaceEditData -> LSPIJUtils.applyWorkspaceEdit(workspaceEditData.edit()));
workspaceEdits.forEach(workspaceEditData -> LSPIJUtils.applyWorkspaceEdit(workspaceEditData.edit(), true));

// Update any found external references with the new name
externalReferences.forEach(externalReference -> {
Expand Down
Loading