void (boolean userInitiated, VirtualFile virtualFile) { if (userInitiated) { final List<Document> docsToSave = new ArrayList<>(); final FileDocumentManager manager = FileDocumentManager.getInstance(); for (Document document : manager.getUnsavedDocuments()) { VirtualFile file = manager.getFile(document); if (file != null && VfsUtilCore.isAncestor(virtualFile, file, false)) { docsToSave.add(document); } } if (!docsToSave.isEmpty()) { WriteAction.runAndWait(() -> { for (Document document : docsToSave) { manager.saveDocument(document); } }); } ModalityState modalityState = ProgressManager.getInstance().getProgressIndicator().getModalityState(); VfsUtil.markDirty(true, true, virtualFile); RefreshQueue.getInstance().refresh(false, true, null, modalityState, virtualFile); } }