Skip to content

Commit 584e6c5

Browse files
committed
feat(go): add GoVariableContextBuilder and GoFileContextBuilder
- Add GoVariableContextBuilder to handle variable context in Go files. - Add GoFileContextBuilder to handle file context in Go files. - Update build.gradle.kts to include Go plugin for Goland. - Update cc.unitmesh.go.xml to include GoVariableContextBuilder. - Add plugin.xml for Go plugin.
1 parent 7f121b1 commit 584e6c5

File tree

6 files changed

+64
-1
lines changed

6 files changed

+64
-1
lines changed

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ project(":plugin") {
205205
pluginList += javaPlugins
206206
} else if (baseIDE == "pycharm") {
207207
pluginList += pycharmPlugins
208+
} else if (baseIDE == "goland") {
209+
pluginList += listOf("org.jetbrains.plugins.go")
208210
}
209211
plugins.set(pluginList)
210212
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package cc.unitmesh.go.context
2+
3+
import cc.unitmesh.devti.context.FileContext
4+
import cc.unitmesh.devti.context.builder.FileContextBuilder
5+
import com.goide.psi.GoFile
6+
import com.goide.psi.GoFunctionOrMethodDeclaration
7+
import com.goide.psi.GoTypeDeclaration
8+
import com.intellij.psi.PsiFile
9+
import com.intellij.psi.util.PsiTreeUtil
10+
11+
class GoFileContextBuilder : FileContextBuilder {
12+
override fun getFileContext(psiFile: PsiFile): FileContext? {
13+
if (psiFile !is GoFile) return null
14+
15+
val packageString = psiFile.packageName
16+
val path = psiFile.virtualFile.path
17+
val imports = psiFile.imports
18+
val classes = PsiTreeUtil.getChildrenOfTypeAsList(psiFile, GoTypeDeclaration::class.java)
19+
val methods = PsiTreeUtil.getChildrenOfTypeAsList(psiFile, GoFunctionOrMethodDeclaration::class.java)
20+
21+
return FileContext(psiFile, psiFile.name, path, packageString, imports, classes, methods)
22+
}
23+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package cc.unitmesh.go.context
2+
3+
import cc.unitmesh.devti.context.VariableContext
4+
import cc.unitmesh.devti.context.builder.VariableContextBuilder
5+
import com.goide.psi.GoVarOrConstDefinition
6+
import com.goide.psi.GoVarOrConstSpec
7+
import com.intellij.psi.PsiElement
8+
import com.intellij.psi.util.elementType
9+
10+
class GoVariableContextBuilder : VariableContextBuilder {
11+
override fun getVariableContext(
12+
psiElement: PsiElement,
13+
includeMethodContext: Boolean,
14+
includeClassContext: Boolean,
15+
gatherUsages: Boolean
16+
): VariableContext? {
17+
if (psiElement !is GoVarOrConstDefinition) {
18+
return null
19+
}
20+
21+
22+
val name = psiElement.name
23+
24+
return VariableContext(
25+
psiElement, psiElement.text, name, null, null, emptyList(), false, false
26+
)
27+
}
28+
}

goland/src/main/kotlin/cc/unitmesh/go/provider/GoVersionChatContextProvider.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import cc.unitmesh.devti.provider.context.ChatCreationContext
66
import com.goide.sdk.GoSdkService
77
import com.goide.sdk.GoTargetSdkVersionProvider
88
import com.goide.util.GoUtil
9-
import com.intellij.openapi.module.Module
109
import com.intellij.openapi.project.Project
1110

1211
class GoVersionChatContextProvider : ChatContextProvider {

goland/src/main/resources/cc.unitmesh.go.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
</dependencies>
66

77
<extensions defaultExtensionNs="cc.unitmesh">
8+
<fileContextBuilder language="go" implementationClass="cc.unitmesh.go.context.GoFileContextBuilder"/>
89
<classContextBuilder language="go" implementationClass="cc.unitmesh.go.context.GoStructContextBuilder"/>
910
<methodContextBuilder language="go" implementationClass="cc.unitmesh.go.context.GoMethodContextBuilder"/>
11+
<variableContextBuilder language="go" implementationClass="cc.unitmesh.go.context.GoVariableContextBuilder"/>
1012

1113
<chatContextProvider implementation="cc.unitmesh.go.provider.GoVersionChatContextProvider"/>
1214
</extensions>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<idea-plugin package="cc.unitmesh" xmlns:xi="http://www.w3.org/2001/XInclude">
2+
<id>cc.unitmesh.devti</id>
3+
<xi:include href="/META-INF/autodev-core.xml" xpointer="xpointer(/idea-plugin/*)"/>
4+
5+
<!--suppress PluginXmlValidity -->
6+
<content>
7+
<module name="cc.unitmesh.go"/>
8+
</content>
9+
</idea-plugin>

0 commit comments

Comments
 (0)