@@ -13,6 +13,7 @@ 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.vfs.LocalFileSystem
1617import com.intellij.openapi.vfs.VfsUtil
1718import com.intellij.openapi.wm.ToolWindowManager
1819import com.intellij.testFramework.LightVirtualFile
@@ -296,8 +297,11 @@ class DocController(
296297 messenger.sendChatInputEnabledMessage(message.tabId, false )
297298 }
298299
300+ private val diffVirtualFiles = mutableMapOf<String , ChainDiffVirtualFile >()
301+
299302 private suspend fun acceptChanges (message : IncomingDocMessage .FollowupClicked ) {
300303 insertCode(message.tabId)
304+ previewReadmeFile(message.tabId)
301305 }
302306
303307 private suspend fun promptForDocTarget (tabId : String ) {
@@ -418,6 +422,8 @@ class DocController(
418422 request.putUserData(DiffUserDataKeys .FORCE_READ_ONLY , true )
419423
420424 val newDiff = ChainDiffVirtualFile (SimpleDiffRequestChain (request), message.filePath)
425+
426+ diffVirtualFiles[message.filePath] = newDiff
421427 DiffEditorTabFilesManager .getInstance(context.project).showDiffFile(newDiff, true )
422428 }
423429 }
@@ -1037,6 +1043,33 @@ class DocController(
10371043 session.sendDocTelemetryEvent(null , docAcceptanceEvent)
10381044 }
10391045
1046+ private fun previewReadmeFile (tabId : String ) {
1047+ val session = getSessionInfo(tabId)
1048+ var filePaths: List <NewFileZipInfo > = emptyList()
1049+
1050+ when (val state = session.sessionState) {
1051+ is PrepareDocGenerationState -> {
1052+ filePaths = state.filePaths
1053+ }
1054+ }
1055+ if (filePaths.isNotEmpty()) {
1056+ val filePath = filePaths[0 ].zipFilePath
1057+ val existingDiff = diffVirtualFiles[filePath]
1058+
1059+ val newFilePath = session.context.addressableRoot.toNioPath().resolve(filePath)
1060+ val readmeVirtualFile = LocalFileSystem .getInstance().refreshAndFindFileByPath(newFilePath.toString())
1061+
1062+ runInEdt {
1063+ if (existingDiff != null ) {
1064+ FileEditorManager .getInstance(getProject()).closeFile(existingDiff)
1065+ }
1066+ if (readmeVirtualFile != null ) {
1067+ FileEditorManager .getInstance(getProject()).openFile(readmeVirtualFile, true )
1068+ }
1069+ }
1070+ }
1071+ }
1072+
10401073 fun getProject () = context.project
10411074
10421075 private fun getSessionInfo (tabId : String ) = chatSessionStorage.getSession(tabId, context.project)
0 commit comments