diff --git a/src/main/java/mp/code/intellij/util/FileUtil.java b/src/main/java/mp/code/intellij/util/FileUtil.java index 0b8eab9..5db2240 100644 --- a/src/main/java/mp/code/intellij/util/FileUtil.java +++ b/src/main/java/mp/code/intellij/util/FileUtil.java @@ -47,8 +47,11 @@ public class FileUtil { if(found == null) { VirtualFile lastParent = contentRoot; String[] path = bufferName.split("/"); - for(int i = 0; i < path.length - 1; i++) - lastParent = lastParent.createChildDirectory(requestor, path[i]); + for(int i = 0; i < path.length - 1; i++) { + VirtualFile current = lastParent.findChild(path[i]); + if(current == null) current = lastParent.createChildDirectory(requestor, path[i]); + lastParent = current; + } found = lastParent.createChildData(requestor, path[path.length - 1]); } diff --git a/src/main/java/mp/code/intellij/util/cb/BufferCallback.java b/src/main/java/mp/code/intellij/util/cb/BufferCallback.java index 30edae3..6f37e08 100644 --- a/src/main/java/mp/code/intellij/util/cb/BufferCallback.java +++ b/src/main/java/mp/code/intellij/util/cb/BufferCallback.java @@ -53,6 +53,7 @@ public class BufferCallback implements Consumer { () -> changeList.forEach((change) -> { editor.getDocument().replaceString((int) change.start, (int) change.end, change.content); // check for validity, force-sync if mismatch + // TODO: prompt instead of doing it silently if(change.hash.isPresent() && change.hash.getAsLong() != Extensions.hash(editor.getDocument().getText())) { try { editor.getDocument().setText(bufferController.getContent());