@@ -27,6 +27,9 @@ import com.tang.intellij.lua.reference.ReferencesSearch
2727import com.tang.intellij.lua.search.SearchContext
2828import com.tang.intellij.lua.stubs.index.LuaClassIndex
2929import com.tang.intellij.lua.ty.*
30+ import com.tang.lsp.ExtendApiBase
31+ import com.tang.vscode.extendApi.ExtendApiService
32+
3033
3134/* *
3235 * Documentation support
@@ -105,6 +108,17 @@ class LuaDocumentationProvider : DocumentationProvider {
105108 return " "
106109 }
107110
111+ fun generateExtendDoc (clazzName : String , memberName : String ): String? {
112+ val clazz = ExtendApiService .getNsMember(clazzName)
113+ if (clazz != null ) {
114+ val member = clazz.findMember(memberName)
115+ if (member != null ) {
116+ return generateDoc(member)
117+ }
118+ }
119+ return null
120+ }
121+
108122 private fun renderClassMember (sb : StringBuilder , classMember : LuaClassMember ) {
109123 val context = SearchContext .get(classMember.project)
110124 val parentType = classMember.guessClassType(context)
@@ -114,29 +128,23 @@ class LuaDocumentationProvider : DocumentationProvider {
114128 sb.wrapLanguage(" lua" ) {
115129 when (classMember.visibility) {
116130 Visibility .PUBLIC -> {
117- sb.append(" ( public) " )
131+ sb.append(" public " )
118132 }
119133 Visibility .PRIVATE -> {
120- sb.append(" ( private) " )
134+ sb.append(" private " )
121135 }
122136 Visibility .PROTECTED -> {
123- sb.append(" ( protected) " )
137+ sb.append(" protected " )
124138 }
125139 }
126140 when (ty) {
127141 is TyFunction -> {
128- sb.append(" function " )
129- if (parentType.displayName != " _G" ) {
130- renderTy(sb, parentType)
131- sb.append(if (ty.isColonCall) " :" else " ." )
132- }
133142 sb.append(classMember.name)
134143 renderSignature(sb, ty.mainSignature)
135144
136145 return @wrapLanguage
137146 }
138147 else -> {
139- sb.append(" field " )
140148 if (classMember.name != null && LuaConst .isConstField(
141149 parentType.className,
142150 classMember.name!! ,
@@ -146,8 +154,7 @@ class LuaDocumentationProvider : DocumentationProvider {
146154 when (classMember) {
147155 is LuaTableField -> {
148156 if (classMember.exprList.isNotEmpty()) {
149- renderTy(sb, parentType)
150- sb.append(" .${classMember.name} = " )
157+ sb.append(" ${classMember.name} = " )
151158 sb.append(classMember.exprList.first().text)
152159 return @wrapLanguage
153160 }
@@ -160,7 +167,10 @@ class LuaDocumentationProvider : DocumentationProvider {
160167 val values = assignStat.valueExprList?.exprList ? : listOf ()
161168
162169 for (i in 0 until assignees.size) {
163- if (assignees[i] == classMember && i < values.size && isConstLiteral(values[i])) {
170+ if (assignees[i] == classMember && i < values.size && isConstLiteral(
171+ values[i]
172+ )
173+ ) {
164174 renderTy(sb, parentType)
165175 sb.append(" .${classMember.name} = ${values[i].text} " )
166176 sb.append(" \n " )
@@ -226,7 +236,9 @@ class LuaDocumentationProvider : DocumentationProvider {
226236 // comment content
227237 if (classMember is LuaCommentOwner )
228238 renderComment(sb, classMember.comment)
229- else {
239+ else if (classMember is ExtendApiBase ) {
240+ sb.append(classMember.getComment())
241+ } else {
230242 if (classMember is LuaDocTagField )
231243 renderCommentString(" " , null , sb, classMember.commentString)
232244 else if (classMember is LuaIndexExpr ) {
0 commit comments