Skip to content

Commit c30111d

Browse files
committed
feat(python): init python doc
1 parent 95e1a9f commit c30111d

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package cc.unitmesh.pycharm.provider
2+
3+
import cc.unitmesh.devti.custom.document.LivingDocumentationType
4+
import cc.unitmesh.devti.provider.LivingDocumentation
5+
import com.intellij.openapi.editor.Editor
6+
import com.intellij.openapi.editor.SelectionModel
7+
import com.intellij.psi.PsiElement
8+
import com.intellij.psi.PsiNameIdentifierOwner
9+
import com.intellij.util.IncorrectOperationException
10+
import com.jetbrains.python.documentation.docstrings.PyDocstringGenerator
11+
import com.jetbrains.python.psi.PyDocStringOwner
12+
13+
class PythonLivingDocumentation : LivingDocumentation {
14+
override val forbiddenRules: List<String> = listOf()
15+
16+
override fun startEndString(type: LivingDocumentationType): Pair<String, String> {
17+
return Pair("\"\"\"", "\"\"\"")
18+
}
19+
20+
override fun updateDoc(target: PsiElement, newDoc: String, type: LivingDocumentationType, editor: Editor) {
21+
if (target !is PyDocStringOwner) {
22+
throw IncorrectOperationException()
23+
}
24+
25+
val docstringGenerator = PyDocstringGenerator.forDocStringOwner((target as PyDocStringOwner?)!!)
26+
// docstringGenerator.buildAndInsert(newDoc)
27+
}
28+
29+
override fun findNearestDocumentationTarget(psiElement: PsiElement): PsiNameIdentifierOwner? {
30+
TODO("Not yet implemented")
31+
}
32+
33+
override fun findDocTargetsInSelection(
34+
root: PsiElement,
35+
selectionModel: SelectionModel
36+
): List<PsiNameIdentifierOwner> {
37+
TODO("Not yet implemented")
38+
}
39+
40+
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
<variableContextBuilder language="Python"
1515
implementationClass="cc.unitmesh.pycharm.context.PythonVariableContextBuilder"/>
1616

17+
<livingDocumentation language="Python"
18+
implementationClass="cc.unitmesh.pycharm.provider.PythonLivingDocumentation"/>
19+
1720
<chatContextProvider implementation="cc.unitmesh.pycharm.PythonFrameworkContextProvider"/>
1821

1922
<contextPrompter

0 commit comments

Comments
 (0)