From 9844607d0f18ac88dc18b289791c5aacd33addb1 Mon Sep 17 00:00:00 2001 From: shiraji Date: Sun, 21 Jun 2020 12:30:58 +0200 Subject: [PATCH] Make string literals clickable #KT-35732 Fixed #KT-32403 Fixed --- .../references/KotlinReferenceContributor.kt | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt index 8ec82118eab..eb01bf597cd 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KotlinReferenceContributor.kt @@ -5,12 +5,13 @@ package org.jetbrains.kotlin.idea.references +import com.intellij.openapi.paths.GlobalPathReferenceProvider +import com.intellij.openapi.paths.WebReference +import com.intellij.openapi.util.TextRange +import com.intellij.psi.PsiReference import org.jetbrains.kotlin.idea.kdoc.KDocReferenceDescriptorsImpl import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.psi.KtImportDirective -import org.jetbrains.kotlin.psi.KtNameReferenceExpression -import org.jetbrains.kotlin.psi.KtPackageDirective -import org.jetbrains.kotlin.psi.KtUserType +import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.parents class KotlinReferenceContributor : KotlinReferenceProviderContributor { @@ -54,6 +55,19 @@ class KotlinReferenceContributor : KotlinReferenceProviderContributor { registerProvider(factory = ::KDocReferenceDescriptorsImpl) registerProvider(KotlinDefaultAnnotationMethodImplicitReferenceProvider) + + registerMultiProvider { stringTemplateEntry -> + val texts = stringTemplateEntry.text.split(Regex("\\s")) + val results = mutableListOf() + var startIndex = 0 + texts.forEach { text -> + if (GlobalPathReferenceProvider.isWebReferenceUrl(text)) { + results.add(WebReference(stringTemplateEntry, TextRange(startIndex, startIndex + text.length), text)) + } + startIndex += text.length + 1 + } + results.toTypedArray() + } } } }