Skip to content

Commit

Permalink
Fix CodyInlineCompletionProvider to get it working with 241
Browse files Browse the repository at this point in the history
  • Loading branch information
mkondratek committed Sep 17, 2024
1 parent 64a0b65 commit a465643
Showing 1 changed file with 16 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.sourcegraph.cody.autocomplete

import com.intellij.codeInsight.inline.completion.InlineCompletionElement
import com.intellij.codeInsight.inline.completion.InlineCompletionEvent
import com.intellij.codeInsight.inline.completion.InlineCompletionProvider
import com.intellij.codeInsight.inline.completion.InlineCompletionProviderID
import com.intellij.codeInsight.inline.completion.InlineCompletionRequest
import com.intellij.codeInsight.inline.completion.elements.InlineCompletionGrayTextElement
import com.intellij.codeInsight.inline.completion.suggestion.InlineCompletionSingleSuggestion
import com.intellij.codeInsight.inline.completion.suggestion.InlineCompletionSuggestion
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.service
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.editor.event.DocumentEvent
import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange
Expand Down Expand Up @@ -46,18 +49,17 @@ import java.util.concurrent.atomic.AtomicReference
import org.eclipse.lsp4j.jsonrpc.ResponseErrorException

class CodyInlineCompletionProvider : InlineCompletionProvider {
override val id = InlineCompletionProviderID("cody")
private val logger = Logger.getInstance(CodyInlineCompletionProvider::class.java)
private val currentJob = AtomicReference(CancellationToken())

override suspend fun getProposals(
request: InlineCompletionRequest
): List<InlineCompletionElement> {
override suspend fun getSuggestion(request: InlineCompletionRequest): InlineCompletionSuggestion {
val editor = request.editor
val project = editor.project ?: return emptyList()
val project = editor.project ?: return InlineCompletionSuggestion.Empty
val enabled = isImplicitAutocompleteEnabledForEditor(editor)
val codyApplicationSettings = service<CodyApplicationSettings>()
if (!enabled || !codyApplicationSettings.isExperimentalCompletionProviderEnabled) {
return emptyList()
return InlineCompletionSuggestion.Empty
}
val lookupString: String? = null // todo: can we use this provider for lookups?

Expand All @@ -74,15 +76,17 @@ class CodyInlineCompletionProvider : InlineCompletionProvider {
cancellationToken,
lookupString)
.get()
} ?: return emptyList()
} ?: return InlineCompletionSuggestion.Empty

val offset = request.endOffset
val lineNumber = editor.document.getLineNumber(offset)
val caretPositionInLine = offset - editor.document.getLineStartOffset(lineNumber)

return completions.items
.map { InlineCompletionElement(it.insertText.substring(caretPositionInLine)) }
.toList()
return InlineCompletionSingleSuggestion.Companion.build {
completions.items
.map { InlineCompletionGrayTextElement(it.insertText.substring(caretPositionInLine)) }
.forEach { emit(it) }
}
}

@RequiresEdt
Expand Down Expand Up @@ -210,7 +214,7 @@ class CodyInlineCompletionProvider : InlineCompletionProvider {
return 0
}

override fun isEnabled(event: DocumentEvent): Boolean {
override fun isEnabled(event: InlineCompletionEvent): Boolean {
return ConfigUtil.isCodyEnabled() && ConfigUtil.isCodyAutocompleteEnabled()
}
}

0 comments on commit a465643

Please sign in to comment.