From b8b78dd079ac8ea52cbfd001aa9f0b4bb0e60f33 Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Mon, 24 Mar 2025 10:21:38 +0000 Subject: [PATCH] fix: do not trigger next edit diff when no change detected --- .../codecompletions/edit/GrpcClientService.kt | 5 ++++- .../codegpt/predictions/CodeSuggestionDiffViewer.kt | 13 +++++-------- src/main/proto/next-edit.proto | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/edit/GrpcClientService.kt b/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/edit/GrpcClientService.kt index 0174beda..964b5470 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/edit/GrpcClientService.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/edit/GrpcClientService.kt @@ -89,7 +89,10 @@ class GrpcClientService(private val project: Project) : Disposable { ) : StreamObserver { override fun onNext(response: NextEditResponse) { runInEdt { - if (LookupManager.getActiveLookup(editor) == null) { + val documentText = editor.document.text + if (LookupManager.getActiveLookup(editor) == null + && documentText != response.nextRevision + && documentText == response.oldRevision) { CodeSuggestionDiffViewer.displayInlineDiff(editor, response, isManuallyOpened) } } diff --git a/src/main/kotlin/ee/carlrobert/codegpt/predictions/CodeSuggestionDiffViewer.kt b/src/main/kotlin/ee/carlrobert/codegpt/predictions/CodeSuggestionDiffViewer.kt index 6f92657a..9def80e5 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/predictions/CodeSuggestionDiffViewer.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/predictions/CodeSuggestionDiffViewer.kt @@ -50,7 +50,7 @@ import kotlin.math.max class CodeSuggestionDiffViewer( request: DiffRequest, - private val responseId: UUID, + val nextEditResponse: NextEditResponse, private val mainEditor: Editor, private val isManuallyOpened: Boolean ) : UnifiedDiffViewer(MyDiffContext(mainEditor.project), request), Disposable { @@ -125,7 +125,8 @@ class CodeSuggestionDiffViewer( } application.executeOnPooledThread { - project?.service()?.acceptEdit(responseId, change.toString()) + project?.service() + ?.acceptEdit(UUID.fromString(nextEditResponse.id), change.toString()) } } @@ -315,12 +316,8 @@ class CodeSuggestionDiffViewer( } val diffRequest = createSimpleDiffRequest(editor, nextRevision) - val diffViewer = CodeSuggestionDiffViewer( - diffRequest, - UUID.fromString(nextEditResponse.id), - editor, - isManuallyOpened - ) + val diffViewer = + CodeSuggestionDiffViewer(diffRequest, nextEditResponse, editor, isManuallyOpened) editor.putUserData(CodeGPTKeys.EDITOR_PREDICTION_DIFF_VIEWER, diffViewer) diffViewer.rediff(true) } diff --git a/src/main/proto/next-edit.proto b/src/main/proto/next-edit.proto index 1f6288f9..cf3399c3 100644 --- a/src/main/proto/next-edit.proto +++ b/src/main/proto/next-edit.proto @@ -21,6 +21,7 @@ message NextEditRequest { message NextEditResponse { string id = 1; string next_revision = 2; + string old_revision = 3; } message AcceptEditRequest {