11package com.github.xepozz.gitattributes.ide.documentation
22
3- import com.github.xepozz.crontab.ide.documentation.AttributesDocumentationUtils
43import com.github.xepozz.gitattributes.language.AttributesFile
54import com.github.xepozz.gitattributes.language.psi.AttributesDefinition
6- import com.github.xepozz.gitattributes.language.psi.AttributesPattern
75import com.intellij.extapi.psi.ASTDelegatePsiElement
86import com.intellij.lang.ASTNode
9- import com.intellij.lang.documentation.DocumentationMarkup
107import com.intellij.lang.documentation.DocumentationProvider
11- import com.intellij.lang.documentation.QuickDocHighlightingHelper
128import com.intellij.markdown.utils.doc.DocMarkdownToHtmlConverter
139import com.intellij.openapi.editor.Editor
1410import com.intellij.openapi.project.Project
@@ -17,7 +13,6 @@ import com.intellij.psi.PsiComment
1713import com.intellij.psi.PsiDocCommentBase
1814import com.intellij.psi.PsiElement
1915import com.intellij.psi.PsiFile
20- import com.intellij.psi.presentation.java.SymbolPresentationUtil
2116import com.intellij.psi.util.PsiTreeUtil
2217import java.util.function.Consumer
2318
@@ -49,10 +44,25 @@ class AttributesDocumentationProvider : DocumentationProvider {
4944
5045 override fun generateRenderedDoc (comment : PsiDocCommentBase ) = markdownToHtml(comment.text, comment.project)
5146
52- fun markdownToHtml (string : String , project : Project ) = string
53- .split(" \n " )
54- .joinToString(" \n " ) { it.replaceFirst(Regex (" #+\\ s+" ), " " ) }
55- .let { DocMarkdownToHtmlConverter .convert(project, it) }
47+ fun markdownToHtml (string : String , project : Project ): String {
48+ val markdownText = string
49+ .split(" \n " )
50+ .joinToString(" \n " ) { it.replaceFirst(Regex (" #+\\ s+" ), " " ) }
51+
52+ return try {
53+ // Dynamically find the class
54+ val clazz = Class .forName(" com.intellij.markdown.utils.doc.DocMarkdownToHtmlConverter" )
55+
56+ // Find the 'convert' method (assuming it's `static fun convert(project, text)`)
57+ val method = clazz.getMethod(" convert" , Project ::class .java, String ::class .java)
58+
59+ // Invoke the static method
60+ method.invoke(null , project, markdownText) as String
61+ } catch (e: ClassNotFoundException ) {
62+ // println("Markdown converter not available, returning plain text.")
63+ markdownText
64+ }
65+ }
5666
5767 override fun findDocComment (file : PsiFile , range : TextRange ): PsiDocCommentBase ? {
5868 val element = file.findElementAt(range.startOffset) as ? PsiComment ? : return null
0 commit comments