Skip to content

Commit 5cc7ae1

Browse files
Merge main into feature/q-lsp
2 parents 61c2b5f + 06ce101 commit 5cc7ae1

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Amazon Q /doc: close diff tab and open README file in preview mode after user accept changes"
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqDoc/controller/DocController.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import com.intellij.diff.util.DiffUserDataKeys
1313
import com.intellij.ide.BrowserUtil
1414
import com.intellij.openapi.application.runInEdt
1515
import com.intellij.openapi.fileEditor.FileEditorManager
16+
import com.intellij.openapi.fileEditor.TextEditorWithPreview
17+
import com.intellij.openapi.vfs.LocalFileSystem
1618
import com.intellij.openapi.vfs.VfsUtil
1719
import com.intellij.openapi.wm.ToolWindowManager
1820
import 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

Comments
 (0)