Skip to content

Commit

Permalink
Lower Cody CodeActions priority as a temporary workaround
Browse files Browse the repository at this point in the history
  • Loading branch information
RXminuS committed Aug 26, 2024
1 parent cf1af08 commit f3b97c4
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,25 @@ package com.sourcegraph.cody.inspections

import com.intellij.codeInsight.intention.IntentionAction
import com.intellij.codeInsight.intention.PriorityAction
import com.intellij.codeInspection.HintAction
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFile
import com.sourcegraph.cody.agent.CodyAgentService
import com.sourcegraph.cody.agent.protocol_generated.CodeActions_ProvideParams
import com.sourcegraph.cody.agent.protocol_generated.CodeActions_TriggerParams
import com.sourcegraph.cody.agent.protocol_generated.ProtocolCodeAction
import com.sourcegraph.cody.agent.protocol_generated.ProtocolLocation
import com.sourcegraph.cody.edit.actions.EditCodeAction

data class CodeActionQuickFixParams(
val title: String,
val kind: String?,
val action: ProtocolCodeAction,
val location: ProtocolLocation,
)

class CodeActionQuickFix(private val params: CodeActionQuickFixParams) :
IntentionAction, PriorityAction {
IntentionAction, HintAction, PriorityAction {
companion object {
const val FAMILY_NAME = "Cody Code Action"
}
Expand All @@ -28,11 +29,12 @@ class CodeActionQuickFix(private val params: CodeActionQuickFixParams) :

override fun getPriority(): PriorityAction.Priority {
return if (isFixAction()) {
PriorityAction.Priority.TOP
PriorityAction.Priority.NORMAL
} else if (isExplainAction()) {
PriorityAction.Priority.LOW
} else {
PriorityAction.Priority.HIGH
if (params.action.isPreferred == true) PriorityAction.Priority.NORMAL
else PriorityAction.Priority.LOW
}
}

Expand All @@ -42,17 +44,17 @@ class CodeActionQuickFix(private val params: CodeActionQuickFixParams) :
}

override fun getText(): String {
return params.title
return params.action.title
}

private fun isFixAction(): Boolean {
// TODO: Ideally we have some flag indicating the semantic action type
return params.title.lowercase() == "ask cody to fix"
return params.action.title.lowercase() == "ask cody to fix"
}

private fun isExplainAction(): Boolean {
// TODO: Ideally we have some flag indicating the semantic action type
return params.title.lowercase() == "ask cody to explain"
return params.action.title.lowercase() == "ask cody to explain"
}

private fun isKnownAction(): Boolean {
Expand Down Expand Up @@ -97,7 +99,9 @@ class CodeActionQuickFix(private val params: CodeActionQuickFixParams) :
CodeActions_ProvideParams(location = params.location, triggerKind = "Invoke"))
.get()
val action =
provideResponse.codeActions.find { it.title == params.title && it.kind == params.kind }
provideResponse.codeActions.find {
it.title == params.action.title && it.kind == params.action.kind
}
if (action == null) {
// TODO: handle this with a user notification
throw Exception("Could not find action")
Expand All @@ -107,4 +111,8 @@ class CodeActionQuickFix(private val params: CodeActionQuickFixParams) :
EditCodeAction.completedEditTasks[result.id] = result
}
}

override fun showHint(editor: Editor): Boolean {
return true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ class CodyFixHighlightPass(val file: PsiFile, val editor: Editor) :
.get()
myRangeActions[range] =
provideResponse.codeActions.map {
CodeActionQuickFixParams(title = it.title, kind = it.kind, location = location)
CodeActionQuickFixParams(action = it, location = location)
}
}
done.complete(Unit)
Expand Down

0 comments on commit f3b97c4

Please sign in to comment.