Skip to content

Commit 8a49d22

Browse files
authored
Merge branch 'feature/q-lsp-chat' into q-lsp-chat
2 parents c79e57c + 578a62e commit 8a49d22

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.amazonq.lsp
5+
6+
import com.intellij.diff.chains.SimpleDiffRequestChain
7+
import com.intellij.diff.editor.ChainDiffVirtualFile
8+
import com.intellij.diff.editor.DiffEditorTabFilesManager
9+
import com.intellij.diff.requests.SimpleDiffRequest
10+
import com.intellij.openapi.fileEditor.FileEditorManager
11+
import com.intellij.openapi.project.Project
12+
import software.aws.toolkits.resources.message
13+
14+
/**
15+
* A virtual file that represents an AmazonQ diff view.
16+
* This class allows us to identify diff files created by AmazonQ.
17+
*/
18+
class AmazonQDiffVirtualFile(
19+
diffChain: SimpleDiffRequestChain,
20+
name: String,
21+
) : ChainDiffVirtualFile(diffChain, name) {
22+
companion object {
23+
fun openDiff(project: Project, diffRequest: SimpleDiffRequest) {
24+
// Find any existing AmazonQ diff files
25+
val fileEditorManager = FileEditorManager.getInstance(project)
26+
val existingDiffFiles = fileEditorManager.openFiles.filterIsInstance<AmazonQDiffVirtualFile>()
27+
28+
// Close existing diff files
29+
existingDiffFiles.forEach { fileEditorManager.closeFile(it) }
30+
31+
// Create and open the new diff file
32+
val diffChain = SimpleDiffRequestChain(diffRequest)
33+
val diffVirtualFile = AmazonQDiffVirtualFile(diffChain, diffRequest.title ?: message("aws.q.lsp.client.diff_message"))
34+
DiffEditorTabFilesManager.getInstance(project).showDiffFile(diffVirtualFile, true)
35+
}
36+
}
37+
}

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.lsp
55

66
import com.intellij.diff.DiffContentFactory
7-
import com.intellij.diff.DiffManager
8-
import com.intellij.diff.DiffManagerEx
97
import com.intellij.diff.requests.SimpleDiffRequest
108
import com.intellij.openapi.application.ApplicationManager
119
import com.intellij.openapi.fileChooser.FileChooserFactory
@@ -363,11 +361,12 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
363361
else -> "Modified"
364362
}
365363
)
366-
(DiffManager.getInstance() as DiffManagerEx).showDiffBuiltin(project, diffRequest)
364+
365+
AmazonQDiffVirtualFile.openDiff(project, diffRequest)
367366
} catch (e: Exception) {
368367
LOG.warn { "Failed to open file diff: ${e.message}" }
369368
} finally {
370-
// Clean up the temporary file
369+
// Clean up the temporary file used for syntax highlight
371370
try {
372371
tempPath?.let { Files.deleteIfExists(it) }
373372
} catch (e: Exception) {

0 commit comments

Comments
 (0)