From e821ff94030eed40cf278f2a54dfb9cc807dfe9f Mon Sep 17 00:00:00 2001 From: Carl-Robert Linnupuu Date: Wed, 3 Jul 2024 17:41:02 +0300 Subject: [PATCH] feat: use debouncing for code completions --- .../CodeGPTInlineCompletionProvider.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/CodeGPTInlineCompletionProvider.kt b/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/CodeGPTInlineCompletionProvider.kt index e615e1cb..8cb78ff5 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/CodeGPTInlineCompletionProvider.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/codecompletions/CodeGPTInlineCompletionProvider.kt @@ -28,8 +28,11 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import okhttp3.sse.EventSource import java.util.concurrent.atomic.AtomicReference +import kotlin.time.Duration +import kotlin.time.DurationUnit +import kotlin.time.toDuration -class CodeGPTInlineCompletionProvider : InlineCompletionProvider { +class CodeGPTInlineCompletionProvider : DebouncedInlineCompletionProvider() { companion object { private val logger = thisLogger() } @@ -39,7 +42,7 @@ class CodeGPTInlineCompletionProvider : InlineCompletionProvider { override val id: InlineCompletionProviderID get() = InlineCompletionProviderID("CodeGPTInlineCompletionProvider") - override suspend fun getSuggestion(request: InlineCompletionRequest): InlineCompletionSuggestion { + override suspend fun getSuggestionDebounced(request: InlineCompletionRequest): InlineCompletionSuggestion { val editor = request.editor val project = editor.project if (project == null) { @@ -112,6 +115,10 @@ class CodeGPTInlineCompletionProvider : InlineCompletionProvider { }) } + override suspend fun getDebounceDelay(request: InlineCompletionRequest): Duration { + return 600.toDuration(DurationUnit.MILLISECONDS) + } + override fun isEnabled(event: InlineCompletionEvent): Boolean { val selectedService = GeneralSettings.getSelectedService() val codeCompletionsEnabled = when (selectedService) {