Better presentation for use site targets in completion

This commit is contained in:
Valentin Kipyatkov
2015-10-21 18:27:01 +03:00
parent b7809ed94a
commit 798223b0e4
3 changed files with 23 additions and 13 deletions
@@ -307,6 +307,10 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
} }
} }
"get" -> {
collector.addElement(lookupElement)
}
else -> collector.addElement(lookupElement) else -> collector.addElement(lookupElement)
} }
} }
@@ -85,21 +85,27 @@ object KeywordCompletion {
if (!parserFilter(keywordToken)) continue if (!parserFilter(keywordToken)) continue
val insertHandler = if (position.prevLeaf()?.node?.elementType == KtTokens.AT) var element = LookupElementBuilder.create(KeywordLookupObject(), keyword).bold()
val isUseSiteAnnotationTarget = position.prevLeaf()?.node?.elementType == KtTokens.AT
val insertHandler = if (isUseSiteAnnotationTarget)
UseSiteAnnotationTargetInsertHandler UseSiteAnnotationTargetInsertHandler
else if (keywordToken !in FUNCTION_KEYWORDS) else if (keywordToken !in FUNCTION_KEYWORDS)
KotlinKeywordInsertHandler KotlinKeywordInsertHandler
else else
KotlinFunctionInsertHandler.Normal(inputTypeArguments = false, inputValueArguments = false) KotlinFunctionInsertHandler.Normal(inputTypeArguments = false, inputValueArguments = false)
element = element.withInsertHandler(insertHandler)
if (isUseSiteAnnotationTarget) {
element = element.withPresentableText(keyword + ":")
}
val element = LookupElementBuilder.create(KeywordLookupObject(), keyword)
.bold()
.withInsertHandler(insertHandler)
consumer(element) consumer(element)
} }
} }
private val FUNCTION_KEYWORDS = listOf(GET_KEYWORD, SET_KEYWORD, CONSTRUCTOR_KEYWORD) private val FUNCTION_KEYWORDS = listOf(CONSTRUCTOR_KEYWORD)
private val GENERAL_FILTER = NotFilter(OrFilter( private val GENERAL_FILTER = NotFilter(OrFilter(
CommentFilter(), CommentFilter(),
+8 -8
View File
@@ -1,11 +1,11 @@
@<caret>[] @<caret>[]
// EXIST: file // EXIST: { itemText: "file:" }
// EXIST: field // EXIST: { itemText: "field:" }
// EXIST: get // EXIST: { itemText: "get:" }
// EXIST: set // EXIST: { itemText: "set:" }
// EXIST: param // EXIST: { itemText: "param:" }
// EXIST: setparam // EXIST: { itemText: "setparam:" }
// EXIST: property // EXIST: { itemText: "property:" }
// EXIST: receiver // EXIST: { itemText: "receiver:" }
// NOTHING_ELSE // NOTHING_ELSE