Skip to content

Commit fbca54e

Browse files
committed
bug fix #19 documentation for completion items.
1 parent aa1dccf commit fbca54e

File tree

4 files changed

+22
-13
lines changed

4 files changed

+22
-13
lines changed

EmmyLua-Common/src/main/ext/com/tang/intellij/lua/editor/completion/LookupElementFactory.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.tang.intellij.lua.psi.LuaPsiElement
1010
import com.tang.intellij.lua.ty.IFunSignature
1111
import com.tang.intellij.lua.ty.ITy
1212
import com.tang.intellij.lua.ty.ITyFunction
13+
import com.tang.lsp.ILuaFile
1314
import org.eclipse.lsp4j.CompletionItemKind
1415
import javax.swing.Icon
1516

@@ -40,10 +41,11 @@ object LookupElementFactory {
4041
isColonStyle: Boolean,
4142
fnTy: ITyFunction,
4243
icon: Icon?): LuaLookupElement {
44+
val file = classMember.containingFile.virtualFile as ILuaFile
4345
val item = buildSignatureCompletionItem(lookupString, signature)
4446
item.kind = CompletionItemKind.Method
4547
item.itemText = "[$clazzName]"
46-
item.data = "$clazzName|${classMember.name}"
48+
item.data = "${file.uri}|${classMember.textOffset}"
4749
return item
4850
}
4951

@@ -52,8 +54,9 @@ object LookupElementFactory {
5254
field: LuaClassField,
5355
ty: ITy?,
5456
bold: Boolean): LuaLookupElement {
57+
val file = field.containingFile.virtualFile as ILuaFile
5558
val element = LuaLookupElement(name)
56-
element.data = "$clazzName|$name"
59+
element.data = "${file.uri}|${field.textOffset}"
5760
element.kind = CompletionItemKind.Field
5861
return element
5962
}

EmmyLua-Common/src/main/ext/com/tang/lsp/workspace.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import java.net.URI
1111
interface IWorkspace {
1212
fun addFile(file: File, text: String? = null): ILuaFile?
1313
fun findFile(uri: String): IVirtualFile?
14+
fun findLuaFile(uri: String): ILuaFile?
1415
fun removeFile(uri: String)
1516
fun eachRoot(processor: (f: IFolder) -> Boolean)
1617
companion object {

EmmyLua-LS/src/main/kotlin/com/tang/vscode/LuaTextDocumentService.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import com.tang.intellij.lua.editor.completion.asCompletionItem
1818
import com.tang.intellij.lua.psi.*
1919
import com.tang.intellij.lua.reference.ReferencesSearch
2020
import com.tang.intellij.lua.search.SearchContext
21-
import com.tang.intellij.lua.stubs.index.LuaClassMemberIndex
2221
import com.tang.intellij.lua.ty.ITyFunction
2322
import com.tang.intellij.lua.ty.findPerfectSignature
2423
import com.tang.intellij.lua.ty.process
@@ -151,16 +150,18 @@ class LuaTextDocumentService(private val workspace: LuaWorkspaceService) : TextD
151150
if (data is JsonPrimitive) {
152151
val arr = data.asString.split("|")
153152
if (arr.size >= 2) {
154-
val cls = arr[0]
155-
val name = arr[1]
156-
LuaClassMemberIndex.process(cls, name, SearchContext.get(workspace.project), Processor { member ->
157-
val doc = documentProvider.generateDoc(member, member)
158-
val content = MarkupContent()
159-
content.kind = "markdown"
160-
content.value = doc
161-
item.documentation = Either.forRight(content)
162-
false
163-
})
153+
workspace.findLuaFile(arr[0])?.let { file->
154+
val position = arr[1].toInt()
155+
file.psi?.findElementAt(position)?.let { psi ->
156+
PsiTreeUtil.getParentOfType(psi, LuaClassMember::class.java)?.let { member ->
157+
val doc = documentProvider.generateDoc(member, member)
158+
val content = MarkupContent()
159+
content.kind = "markdown"
160+
content.value = doc
161+
item.documentation = Either.forRight(content)
162+
}
163+
}
164+
}
164165
}
165166
}
166167
item

EmmyLua-LS/src/main/kotlin/com/tang/vscode/LuaWorkspaceService.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,10 @@ class LuaWorkspaceService : WorkspaceService, IWorkspace {
263263
return findFile(fileURI)
264264
}
265265

266+
override fun findLuaFile(uri: String): ILuaFile? {
267+
return findFile(uri) as? ILuaFile
268+
}
269+
266270
private fun findFile(fileURI: FileURI): IVirtualFile? {
267271
val parent = fileURI.parent
268272
val folder: IFolder? = if (parent == null)

0 commit comments

Comments
 (0)