Skip to content

Commit

Permalink
feat: add csharp mod
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Aug 7, 2023
1 parent e5bad15 commit 0a49b52
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 3 deletions.
2 changes: 2 additions & 0 deletions build.gradle.kts
Expand Up @@ -58,6 +58,8 @@ val pycharmPlugins = listOf("PythonCore")
val javaPlugins = listOf("com.intellij.java", "org.jetbrains.kotlin")
//val kotlinPlugins = listOf("org.jetbrains.kotlin")
val clionVersion = prop("clionVersion")

// https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html#modules-specific-to-functionality
val clionPlugins = listOf(
"com.intellij.cidr.base",
"com.intellij.cidr.lang",
Expand Down
@@ -0,0 +1,15 @@
package cc.unitmesh.csharp.context

import cc.unitmesh.devti.context.ClassContext
import cc.unitmesh.devti.context.builder.ClassContextBuilder
import com.intellij.psi.PsiElement
import com.jetbrains.rider.ideaInterop.fileTypes.csharp.psi.CSharpBlock

class CsharpClassContextBuilder : ClassContextBuilder {
override fun getClassContext(psiElement: PsiElement, gatherUsages: Boolean): ClassContext? {
if (psiElement !is CSharpBlock) return null

return null
}

}
@@ -0,0 +1,39 @@
package cc.unitmesh.csharp.provider

import cc.unitmesh.devti.gui.chat.ChatActionType
import cc.unitmesh.devti.provider.ContextPrompter
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.temporary.similar.chunks.SimilarChunksWithPaths

class CsharpContextPrompter : ContextPrompter() {
private var additionContext: String = ""

companion object {
val log = logger<CsharpContextPrompter>()
}

override fun initContext(
actionType: ChatActionType,
selectedText: String,
file: PsiFile?,
project: Project,
offset: Int,
element: PsiElement?
) {
super.initContext(actionType, selectedText, file, project, offset, element)
additionContext = SimilarChunksWithPaths.createQuery(file!!) ?: ""
}

override fun displayPrompt(): String {
return "$action\n```${lang}\n$selectedText\n```"
}

override fun requestPrompt(): String {
val prompt = "$action\n```${lang}\n$additionContext\n$selectedText\n```"
log.info("final prompt: $prompt")
return prompt
}
}
13 changes: 13 additions & 0 deletions csharp/src/main/resources/cc.unitmesh.csharp.xml
@@ -0,0 +1,13 @@
<idea-plugin package="cc.unitmesh.csharp">
<!--suppress PluginXmlValidity -->
<dependencies>
<plugin id="com.intellij.modules.rider"/>
</dependencies>

<extensions defaultExtensionNs="cc.unitmesh">
<classContextBuilder language="C#"
implementationClass="cc.unitmesh.csharp.context.CsharpClassContextBuilder"/>

<contextPrompter language="C#" implementation="cc.unitmesh.csharp.provider.CsharpContextPrompter"/>
</extensions>
</idea-plugin>
Expand Up @@ -10,9 +10,6 @@ import com.jetbrains.python.psi.PyFunction
import com.jetbrains.python.psi.types.TypeEvalContext

class PythonClassContextBuilder : ClassContextBuilder {
companion object {
val logger = logger<PythonClassContextBuilder>()
}
override fun getClassContext(psiElement: PsiElement, gatherUsages: Boolean): ClassContext? {
if (psiElement !is PyClass) {
return null
Expand Down

0 comments on commit 0a49b52

Please sign in to comment.