Skip to content

Commit 06f6780

Browse files
committed
optimize code
1 parent cb0be4c commit 06f6780

File tree

2 files changed

+31
-31
lines changed

2 files changed

+31
-31
lines changed

src/main/java/com/tang/intellij/lua/editor/completion/ClassMemberCompletionProvider.kt

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ import com.tang.intellij.lua.ty.*
3434
* Created by tangzx on 2016/12/25.
3535
*/
3636
open class ClassMemberCompletionProvider : CompletionProvider<CompletionParameters>() {
37-
protected interface HandlerProcessor {
38-
fun process(element: LuaLookupElement)
37+
protected abstract class HandlerProcessor {
38+
open fun processLookupString(lookupString: String): String = lookupString
39+
abstract fun process(element: LuaLookupElement)
3940
}
4041

4142
private class InsertHandlerWrapper(val deleteLen: Int, val name:String, val base: InsertHandler<LookupElement>?) : InsertHandler<LookupElement> {
@@ -69,7 +70,7 @@ open class ClassMemberCompletionProvider : CompletionProvider<CompletionParamete
6970
if (!Ty.isInvalid(prefixTypeSet)) {
7071
val prefixMatcher = completionResultSet.prefixMatcher
7172
val resultSet = completionResultSet.withPrefixMatcher(prefixMatcher.prefix)
72-
complete(indexExpr, typeSet, resultSet, prefixMatcher, object : HandlerProcessor {
73+
complete(indexExpr, typeSet, resultSet, prefixMatcher, object : HandlerProcessor() {
7374
override fun process(element: LuaLookupElement) {
7475
element.itemText = txt + colon + element.itemText
7576
element.handler = InsertHandlerWrapper(nameExpr.textLength + 1, txt, element.handler)
@@ -95,18 +96,22 @@ open class ClassMemberCompletionProvider : CompletionProvider<CompletionParamete
9596
val context = SearchContext(project)
9697
luaType.lazyInit(context)
9798
luaType.processMembers(context) { curType, def ->
98-
val className = curType.displayName
99-
if (def is LuaClassField && !isColon) {
100-
addField(completionResultSet, prefixMatcher, curType === luaType, className, def, handlerProcessor)
101-
} else if (def is LuaClassMethod) {
102-
addMethod(completionResultSet, prefixMatcher, curType === luaType, className, def, handlerProcessor)
99+
def.name?.let {
100+
if (prefixMatcher.prefixMatches(it)) {
101+
val className = curType.displayName
102+
if (def is LuaClassField && !isColon) {
103+
addField(completionResultSet, curType === luaType, className, def, handlerProcessor)
104+
} else if (def is LuaClassMethod) {
105+
addMethod(completionResultSet, curType === luaType, className, def, handlerProcessor)
106+
}
107+
}
103108
}
104109
}
105110
}
106111

107-
private fun addField(completionResultSet: CompletionResultSet, prefixMatcher: PrefixMatcher, bold: Boolean, clazzName: String, field: LuaClassField, handlerProcessor: HandlerProcessor?) {
112+
protected fun addField(completionResultSet: CompletionResultSet, bold: Boolean, clazzName: String, field: LuaClassField, handlerProcessor: HandlerProcessor?) {
108113
val name = field.name
109-
if (name != null && prefixMatcher.prefixMatches(name)) {
114+
if (name != null) {
110115
val elementBuilder = LuaFieldLookupElement(name, field, bold)
111116
if (!LuaRefactoringUtil.isLuaIdentifier(name)) {
112117
elementBuilder.lookupString = "['$name']"
@@ -123,12 +128,13 @@ open class ClassMemberCompletionProvider : CompletionProvider<CompletionParamete
123128
}
124129
}
125130

126-
private fun addMethod(completionResultSet: CompletionResultSet, prefixMatcher: PrefixMatcher, bold: Boolean, clazzName: String, def: LuaClassMethod, handlerProcessor: HandlerProcessor?) {
131+
protected fun addMethod(completionResultSet: CompletionResultSet, bold: Boolean, clazzName: String, def: LuaClassMethod, handlerProcessor: HandlerProcessor?) {
127132
val methodName = def.name
128-
if (methodName != null && prefixMatcher.prefixMatches(methodName)) {
133+
if (methodName != null) {
129134
val ty = def.asTy(SearchContext(def.project))
130135
ty.process(Processor {
131-
val le = TyFunctionLookupElement(methodName, it, bold, ty, LuaIcons.CLASS_METHOD)
136+
val lookupString = handlerProcessor?.processLookupString(methodName) ?: methodName
137+
val le = TyFunctionLookupElement(lookupString, it, bold, ty, LuaIcons.CLASS_METHOD)
132138
le.handler = SignatureInsertHandler(it)
133139
if (!ty.isSelfCall) le.setItemTextUnderlined(true)
134140
le.setTailText(" [$clazzName]")

src/main/java/com/tang/intellij/lua/editor/completion/SuggestSelfMemberProvider.kt

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,19 @@
1717
package com.tang.intellij.lua.editor.completion
1818

1919
import com.intellij.codeInsight.completion.CompletionParameters
20-
import com.intellij.codeInsight.completion.CompletionProvider
2120
import com.intellij.codeInsight.completion.CompletionResultSet
2221
import com.intellij.psi.util.PsiTreeUtil
2322
import com.intellij.util.ProcessingContext
2423
import com.tang.intellij.lua.psi.LuaClassField
2524
import com.tang.intellij.lua.psi.LuaClassMethod
2625
import com.tang.intellij.lua.psi.LuaClassMethodDef
27-
import com.tang.intellij.lua.psi.processOptional
2826
import com.tang.intellij.lua.search.SearchContext
2927

3028
/**
3129
* suggest self.xxx
3230
* Created by TangZX on 2017/4/11.
3331
*/
34-
class SuggestSelfMemberProvider : CompletionProvider<CompletionParameters>() {
32+
class SuggestSelfMemberProvider : ClassMemberCompletionProvider() {
3533
override fun addCompletions(completionParameters: CompletionParameters,
3634
processingContext: ProcessingContext,
3735
completionResultSet: CompletionResultSet) {
@@ -42,23 +40,19 @@ class SuggestSelfMemberProvider : CompletionProvider<CompletionParameters>() {
4240
val type = methodDef.getClassType(searchContext)
4341
type?.processMembers(searchContext) { curType, member ->
4442
if (member is LuaClassField) {
45-
val fieldName = member.name
46-
if (fieldName != null) {
47-
val elementBuilder = LuaFieldLookupElement("self." + fieldName, member, curType === type)
48-
elementBuilder.setTailText(" [" + curType.displayName + "]")
49-
completionResultSet.addElement(elementBuilder)
50-
}
43+
addField(completionResultSet, curType === type, curType.className, member, object : HandlerProcessor() {
44+
override fun process(element: LuaLookupElement) {
45+
element.lookupString = "self.${member.name}"
46+
}
47+
})
5148
} else if (member is LuaClassMethod) {
52-
val methodName = member.name
53-
if (methodName != null) {
54-
//todo no processOptional
55-
processOptional(member.params) { signature, mask ->
56-
val elementBuilder = LuaMethodLookupElement("self:" + methodName, signature, curType === type, member)
57-
elementBuilder.handler = FuncInsertHandler(member).withMask(mask)
58-
elementBuilder.setTailText(" [" + curType.displayName + "]")
59-
completionResultSet.addElement(elementBuilder)
49+
addMethod(completionResultSet, curType === type, curType.className, member, object : HandlerProcessor() {
50+
override fun process(element: LuaLookupElement) { }
51+
52+
override fun processLookupString(lookupString: String): String {
53+
return "self:${member.name}"
6054
}
61-
}
55+
})
6256
}
6357
}
6458
}

0 commit comments

Comments
 (0)