Skip to content

Commit

Permalink
feat(kotlin): add better support for it
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jul 31, 2023
1 parent 4efe9ba commit 044a30c
Show file tree
Hide file tree
Showing 8 changed files with 43 additions and 55 deletions.
Expand Up @@ -22,7 +22,7 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.PsiManager
import kotlinx.coroutines.runBlocking

class JvmIdeaContextPrompter : ContextPrompter() {
open class JvmIdeaContextPrompter : ContextPrompter() {
private var additionContext: String = ""
private val autoDevSettingsState = AutoDevSettingsState.getInstance()
private var customPromptConfig: CustomPromptConfig? = null
Expand Down Expand Up @@ -59,24 +59,12 @@ class JvmIdeaContextPrompter : ContextPrompter() {
val prompt = createPrompt(selectedText)

val finalPrompt = if (additionContext.isNotEmpty()) {
"""|```
|$additionContext
|```
|
|```$lang
|$selectedText
|```
|""".trimMargin()
"```\n$additionContext\n```\n\n```$lang\n$selectedText\n```\n"
} else {
"""|```$lang
|$selectedText
|```
""".trimMargin()
"```$lang\n$selectedText\n```"
}

return@runBlocking """$prompt:
|$finalPrompt
""".trimMargin()
return@runBlocking "$prompt: \n$finalPrompt"
}
}

Expand All @@ -85,21 +73,12 @@ class JvmIdeaContextPrompter : ContextPrompter() {
val prompt = createPrompt(selectedText)

val finalPrompt = if (additionContext.isNotEmpty()) {
"""|$additionContext
|```$lang
|$selectedText
|```
|""".trimMargin()
"$additionContext\n```$lang\n$selectedText\n```\n"
} else {
"""|```$lang
|$selectedText
|```
""".trimMargin()
"```$lang\n$selectedText\n```"
}

return@runBlocking """$prompt:
|$finalPrompt
""".trimMargin()
return@runBlocking "$prompt:\n$finalPrompt"
}
}

Expand Down
@@ -0,0 +1,6 @@
package cc.unitmesh.kotlin.provider

import cc.unitmesh.idea.flow.provider.JvmIdeaContextPrompter

class KotlinContextPrompter: JvmIdeaContextPrompter() {
}
3 changes: 3 additions & 0 deletions kotlin/src/main/resources/cc.unitmesh.kotlin.xml
Expand Up @@ -26,6 +26,9 @@
<chatContextProvider implementation="cc.unitmesh.kotlin.provider.KotlinVersionProvider"/>
<chatContextProvider implementation="cc.unitmesh.kotlin.provider.KotlinTestContextProvider"/>

<contextPrompter
language="kotlin"
implementation="cc.unitmesh.kotlin.provider.KotlinContextPrompter"/>
<testContextProvider
language="kotlin"
implementation="cc.unitmesh.kotlin.provider.KotlinWriteTestService"/>
Expand Down
Expand Up @@ -6,21 +6,11 @@ import cc.unitmesh.devti.provider.ContextPrompter
class PythonContextPrompter : ContextPrompter() {
override fun displayPrompt(): String {
val chunkContext = SimilarChunksWithPaths().similarChunksWithPaths(file!!).toQuery()
return """$action for the code:
```${lang}
$chunkContext
$selectedText
```
""".trimIndent()
return "$action\n```${lang}\n$chunkContext\n$selectedText\n```"
}

override fun requestPrompt(): String {
val chunkContext = SimilarChunksWithPaths().similarChunksWithPaths(file!!).toQuery()
return """$action for the code:
```${lang}
$chunkContext
$selectedText
```
""".trimIndent()
return "$action\n```${lang}\n$chunkContext\n$selectedText\n```"
}
}
Expand Up @@ -4,7 +4,6 @@ import cc.unitmesh.devti.gui.chat.ChatRole
import cc.unitmesh.devti.parser.Code
import com.intellij.lang.Language
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.editor.Document
import com.intellij.openapi.editor.Editor
Expand All @@ -25,8 +24,8 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.testFramework.LightVirtualFile
import com.intellij.util.concurrency.annotations.RequiresReadLock
import com.intellij.util.ui.JBUI
import kotlin.jvm.internal.Ref
import javax.swing.JComponent
import kotlin.jvm.internal.Ref

class CodeBlockView(private val block: CodeBlock, private val project: Project, private val disposable: Disposable) :
MessageBlockView {
Expand Down
10 changes: 7 additions & 3 deletions src/main/kotlin/cc/unitmesh/devti/provider/ContextPrompter.kt
@@ -1,6 +1,7 @@
package cc.unitmesh.devti.provider

import cc.unitmesh.devti.gui.chat.ChatActionType
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFile
Expand Down Expand Up @@ -54,11 +55,14 @@ abstract class ContextPrompter : LazyExtensionInstance<ContextPrompter>() {
it.language?.lowercase() == lang.lowercase()
}

return if (contextPrompter.isEmpty()) {
extensionList.first()
} else {
val prompter = if (contextPrompter.isNotEmpty()) {
contextPrompter.first()
} else {
logger<ContextPrompter>().warn("No context prompter found for language $lang, will use default")
DefaultContextPrompter()
}

return prompter
}
}
}
Expand Down
@@ -0,0 +1,15 @@
package cc.unitmesh.devti.provider

import cc.unitmesh.devti.context.chunks.SimilarChunksWithPaths

class DefaultContextPrompter : ContextPrompter() {
override fun displayPrompt(): String {
val chunkContext = SimilarChunksWithPaths().similarChunksWithPaths(file!!).toQuery()
return "$action\n```${lang}\n$chunkContext\n$selectedText\n```"
}

override fun requestPrompt(): String {
val chunkContext = SimilarChunksWithPaths().similarChunksWithPaths(file!!).toQuery()
return "$action\n```${lang}\n$chunkContext\n$selectedText\n```"
}
}
Expand Up @@ -14,18 +14,10 @@ class JavaScriptContextPrompter : ContextPrompter() {
""
}

return """$action for the code:
```${lang}$frameInfo
$selectedText
```
""".trimIndent()
return "$action for the code:\n```${lang}$frameInfo\n$selectedText\n```"
}

override fun requestPrompt(): String {
return """$action for the code:
```${lang}
$selectedText
```
""".trimIndent()
return "$action for the code:\n```${lang}\n$selectedText\n```"
}
}

0 comments on commit 044a30c

Please sign in to comment.