Skip to content

Commit fb1935d

Browse files
authored
Merge pull request #5349 from continuedev/nate/agent-jetbrains
Agent fixes in JetBrains
2 parents 6ab6a37 + 0c3e013 commit fb1935d

File tree

3 files changed

+60
-1
lines changed

3 files changed

+60
-1
lines changed

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,25 @@ class IdeProtocolClient(
432432
}
433433
}
434434

435+
"acceptDiff" -> {
436+
val params = Gson().fromJson(
437+
dataElement.toString(),
438+
AcceptDiffParams::class.java
439+
)
440+
val filepath = params.filepath;
441+
442+
acceptOrRejectDiff(filepath, true)
443+
}
444+
445+
"rejectDiff" -> {
446+
val params = Gson().fromJson(
447+
dataElement.toString(),
448+
RejectDiffParams::class.java
449+
)
450+
val filepath = params.filepath;
451+
acceptOrRejectDiff(filepath, false)
452+
}
453+
435454
"applyToFile" -> {
436455
val params = Gson().fromJson(
437456
dataElement.toString(),
@@ -648,6 +667,29 @@ class IdeProtocolClient(
648667
continuePluginService.sendToWebview("acceptRejectDiff", AcceptRejectDiff(accepted, stepIndex), uuid())
649668
}
650669

670+
fun acceptOrRejectDiff(filepath: String, accepted: Boolean) {
671+
val virtualFile = VirtualFileManager.getInstance().findFileByUrl(filepath)
672+
673+
if (virtualFile != null) {
674+
ApplicationManager.getApplication().invokeAndWait {
675+
val openedEditor =
676+
FileEditorManager.getInstance(project).openFile(virtualFile, true)?.first()
677+
if (openedEditor != null) {
678+
val editor: Editor? = FileEditorManager.getInstance(project).selectedTextEditor
679+
680+
if (editor != null) {
681+
val diffStreamService = project.service<DiffStreamService>()
682+
if (accepted) {
683+
diffStreamService.accept(editor)
684+
} else {
685+
diffStreamService.reject(editor)
686+
}
687+
}
688+
}
689+
}
690+
}
691+
}
692+
651693
fun deleteAtIndex(index: Int) {
652694
continuePluginService.sendToWebview("deleteAtIndex", DeleteAtIndex(index), uuid())
653695
}

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IntelliJIde.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ class IntelliJIDE(
192192

193193
override suspend fun writeFile(path: String, contents: String) {
194194
val file = File(URI(path))
195+
file.parentFile?.mkdirs()
195196
file.writeText(contents)
196197
}
197198

@@ -207,7 +208,13 @@ class IntelliJIDE(
207208
}
208209

209210
override suspend fun openFile(path: String) {
210-
val file = LocalFileSystem.getInstance().findFileByPath(URI(path).path)
211+
// Convert URI path to absolute file path
212+
val filePath = File(URI(path)).absolutePath
213+
// Find the file using the absolute path
214+
val file = withContext(Dispatchers.IO) {
215+
LocalFileSystem.getInstance().refreshAndFindFileByPath(filePath)
216+
}
217+
211218
file?.let {
212219
ApplicationManager.getApplication().invokeLater {
213220
FileEditorManager.getInstance(project).openFile(it, true)

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/protocol/ideWebview.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ data class ApplyToFileParams(
1515
val toolCallId: String?
1616
)
1717

18+
data class AcceptDiffParams(
19+
val filepath: String,
20+
val streamId: String
21+
)
22+
23+
data class RejectDiffParams(
24+
val filepath: String,
25+
val streamId: String
26+
)
27+
1828
data class InsertAtCursorParams(
1929
val text: String
2030
)

0 commit comments

Comments
 (0)