@@ -13,6 +13,8 @@ import com.intellij.diff.util.DiffUserDataKeys
1313import com.intellij.ide.BrowserUtil
1414import com.intellij.openapi.application.runInEdt
1515import com.intellij.openapi.fileEditor.FileEditorManager
16+ import com.intellij.openapi.fileEditor.TextEditorWithPreview
17+ import com.intellij.openapi.vfs.LocalFileSystem
1618import com.intellij.openapi.vfs.VfsUtil
1719import com.intellij.openapi.wm.ToolWindowManager
1820import com.intellij.testFramework.LightVirtualFile
@@ -298,8 +300,11 @@ class DocController(
298300 messenger.sendChatInputEnabledMessage(message.tabId, false )
299301 }
300302
303+ private val diffVirtualFiles = mutableMapOf<String , ChainDiffVirtualFile >()
304+
301305 private suspend fun acceptChanges (message : IncomingDocMessage .FollowupClicked ) {
302306 insertCode(message.tabId)
307+ previewReadmeFile(message.tabId)
303308 }
304309
305310 private suspend fun promptForDocTarget (tabId : String ) {
@@ -420,6 +425,8 @@ class DocController(
420425 request.putUserData(DiffUserDataKeys .FORCE_READ_ONLY , true )
421426
422427 val newDiff = ChainDiffVirtualFile (SimpleDiffRequestChain (request), message.filePath)
428+
429+ diffVirtualFiles[message.filePath] = newDiff
423430 DiffEditorTabFilesManager .getInstance(context.project).showDiffFile(newDiff, true )
424431 }
425432 }
@@ -1047,6 +1054,34 @@ class DocController(
10471054 session.sendDocTelemetryEvent(null , docAcceptanceEvent)
10481055 }
10491056
1057+ private fun previewReadmeFile (tabId : String ) {
1058+ val session = getSessionInfo(tabId)
1059+ var filePaths: List <NewFileZipInfo > = emptyList()
1060+
1061+ when (val state = session.sessionState) {
1062+ is PrepareDocGenerationState -> {
1063+ filePaths = state.filePaths
1064+ }
1065+ }
1066+
1067+ if (filePaths.isNotEmpty()) {
1068+ val filePath = filePaths[0 ].zipFilePath
1069+ val existingDiff = diffVirtualFiles[filePath]
1070+
1071+ val newFilePath = session.context.addressableRoot.toNioPath().resolve(filePath)
1072+ val readmeVirtualFile = LocalFileSystem .getInstance().refreshAndFindFileByPath(newFilePath.toString())
1073+
1074+ runInEdt {
1075+ if (existingDiff != null ) {
1076+ FileEditorManager .getInstance(getProject()).closeFile(existingDiff)
1077+ }
1078+ if (readmeVirtualFile != null ) {
1079+ TextEditorWithPreview .openPreviewForFile(getProject(), readmeVirtualFile)
1080+ }
1081+ }
1082+ }
1083+ }
1084+
10501085 fun getProject () = context.project
10511086
10521087 private fun getSessionInfo (tabId : String ) = chatSessionStorage.getSession(tabId, context.project)
0 commit comments