Skip to content

Commit bc2c92e

Browse files
fix(amazonq): Bug Fix for "Q: Send to Prompt" doesn't work in split panes on local or remote (#5463)
* Fixing bugs IDE-16164 and IDE-16163
1 parent 7714059 commit bc2c92e

File tree

4 files changed

+36
-5
lines changed

4 files changed

+36
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix Q: Send to Prompt option to work in split panes on local and remote."
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqCodeTest/controller/CodeTestChatController.kt

+19-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import com.intellij.diff.requests.SimpleDiffRequest
1010
import com.intellij.ide.BrowserUtil
1111
import com.intellij.openapi.application.ApplicationManager
1212
import com.intellij.openapi.application.runInEdt
13+
import com.intellij.openapi.editor.EditorFactory
14+
import com.intellij.openapi.fileEditor.FileDocumentManager
1315
import com.intellij.openapi.fileEditor.FileEditorManager
1416
import com.intellij.openapi.project.Project
1517
import com.intellij.openapi.project.guessProjectDir
@@ -95,6 +97,7 @@ import software.aws.toolkits.jetbrains.services.cwc.editor.context.file.FileCont
9597
import software.aws.toolkits.jetbrains.services.cwc.messages.ChatMessageType
9698
import software.aws.toolkits.jetbrains.services.telemetry.TelemetryService
9799
import software.aws.toolkits.jetbrains.ui.feedback.TestGenFeedbackDialog
100+
import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend
98101
import software.aws.toolkits.jetbrains.utils.notifyError
99102
import software.aws.toolkits.resources.message
100103
import software.aws.toolkits.telemetry.AmazonqTelemetry
@@ -1246,9 +1249,22 @@ class CodeTestChatController(
12461249
message: IncomingCodeTestMessage.StartTestGen,
12471250
): ActiveFileInfo? {
12481251
try {
1249-
val fileEditorManager = FileEditorManager.getInstance(project)
1250-
val activeEditor = fileEditorManager.selectedEditor
1251-
val activeFile = fileEditorManager.selectedFiles.firstOrNull()
1252+
val (activeEditor, activeFile) = when {
1253+
isRunningOnRemoteBackend() -> {
1254+
val editors = EditorFactory.getInstance().allEditors
1255+
val editor = editors.firstOrNull()
1256+
val file = editor?.document?.let { document ->
1257+
FileDocumentManager.getInstance().getFile(document)
1258+
}
1259+
Pair(editor, file)
1260+
}
1261+
else -> {
1262+
val fileEditorManager = FileEditorManager.getInstance(project)
1263+
val editor = fileEditorManager.selectedEditor
1264+
val file = fileEditorManager.selectedFiles.firstOrNull()
1265+
Pair(editor, file)
1266+
}
1267+
}
12521268
val projectRoot = project.basePath?.let { Path.of(it) }?.toFile()?.toVirtualFile() ?: run {
12531269
project.guessProjectDir() ?: error("Cannot guess base directory for project ${project.name}")
12541270
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/file/FileContextExtractor.kt

+7-1
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,18 @@ import software.aws.toolkits.jetbrains.services.amazonq.webview.FqnWebviewAdapte
1313
import software.aws.toolkits.jetbrains.services.cwc.editor.context.file.util.LanguageExtractor
1414
import software.aws.toolkits.jetbrains.services.cwc.editor.context.file.util.MatchPolicyExtractor
1515
import software.aws.toolkits.jetbrains.utils.computeOnEdt
16+
import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend
1617

1718
class FileContextExtractor(private val fqnWebviewAdapter: FqnWebviewAdapter?, private val project: Project) {
1819
private val languageExtractor: LanguageExtractor = LanguageExtractor()
1920
suspend fun extract(): FileContext? {
21+
val editorManager = FileEditorManager.getInstance(project)
22+
2023
val editor = computeOnEdt {
21-
FileEditorManager.getInstance(project).selectedTextEditorWithRemotes.firstOrNull()
24+
when {
25+
isRunningOnRemoteBackend() -> editorManager.selectedTextEditorWithRemotes.firstOrNull()
26+
else -> editorManager.selectedTextEditor
27+
}
2228
} ?: return null
2329

2430
val fileLanguage = computeOnEdt {

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/editor/context/focusArea/FocusAreaContextExtractor.kt

+6-1
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,20 @@ import software.aws.toolkits.jetbrains.services.cwc.clients.chat.model.FullyQual
1818
import software.aws.toolkits.jetbrains.services.cwc.controller.ChatController
1919
import software.aws.toolkits.jetbrains.services.cwc.editor.context.file.util.LanguageExtractor
2020
import software.aws.toolkits.jetbrains.utils.computeOnEdt
21+
import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend
2122
import java.awt.Point
2223
import kotlin.math.min
2324

2425
class FocusAreaContextExtractor(private val fqnWebviewAdapter: FqnWebviewAdapter?, private val project: Project) {
2526

2627
private val languageExtractor: LanguageExtractor = LanguageExtractor()
2728
suspend fun extract(): FocusAreaContext? {
29+
val editorManager = FileEditorManager.getInstance(project)
2830
val editor = computeOnEdt {
29-
FileEditorManager.getInstance(project).selectedTextEditorWithRemotes.firstOrNull()
31+
when {
32+
isRunningOnRemoteBackend() -> editorManager.selectedTextEditorWithRemotes.firstOrNull()
33+
else -> editorManager.selectedTextEditor
34+
}
3035
} ?: return null
3136

3237
if (editor.document.text.isBlank()) return null

0 commit comments

Comments
 (0)