Skip to content

Commit 5c7ad6f

Browse files
committed
feat(rust): add RustFileContextBuilder for file context
Add a new file `RustFileContextBuilder.kt` in the `cc.unitmesh.rust.context` package. This file contains the implementation of the `RustFileContextBuilder` class, which is responsible for building the file context for Rust files. The `getFileContext` method extracts relevant information from the `PsiFile` object, such as path, imports, structures, and functions, and creates a `FileContext` object.
1 parent 96063c6 commit 5c7ad6f

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package cc.unitmesh.rust.context
2+
3+
import cc.unitmesh.devti.context.FileContext
4+
import cc.unitmesh.devti.context.builder.FileContextBuilder
5+
import com.intellij.psi.PsiFile
6+
import com.intellij.psi.util.PsiTreeUtil
7+
import org.rust.lang.core.psi.RsFile
8+
import org.rust.lang.core.psi.RsStructItem
9+
import org.rust.lang.core.psi.RsUseItem
10+
11+
class RustFileContextBuilder : FileContextBuilder {
12+
override fun getFileContext(psiFile: PsiFile): FileContext? {
13+
if (psiFile !is RsFile) return null
14+
15+
val path = psiFile.virtualFile.path
16+
val imports = PsiTreeUtil.getChildrenOfTypeAsList(psiFile, RsUseItem::class.java)
17+
val structures = PsiTreeUtil.getChildrenOfTypeAsList(psiFile, RsStructItem::class.java)
18+
val functions = emptyList<PsiFile>()
19+
20+
return FileContext(psiFile, psiFile.name, path, null, imports, structures, functions)
21+
}
22+
}

rust/src/main/resources/cc.unitmesh.rust.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
<dependencies>
44
<plugin id="com.intellij.clion"/>
55
<plugin id="com.intellij.cidr.base"/>
6-
76
<module name="org.rust.lang"/>
87
</dependencies>
98

109
<extensions defaultExtensionNs="cc.unitmesh">
10+
<fileContextBuilder language="Rust"
11+
implementationClass="cc.unitmesh.rust.context.RustFileContextBuilder"/>
1112
<classContextBuilder language="Rust"
1213
implementationClass="cc.unitmesh.rust.context.RustClassContextBuilder"/>
1314
<methodContextBuilder language="Rust"

0 commit comments

Comments
 (0)