@@ -4,9 +4,14 @@ import com.intellij.lang.injection.MultiHostInjector
44import com.intellij.lang.injection.MultiHostRegistrar
55import com.intellij.lang.javascript.psi.JSExpression
66import com.intellij.lang.javascript.psi.ecma6.JSStringTemplateExpression
7+ import com.intellij.openapi.util.Pair
8+ import com.intellij.openapi.util.TextRange
79import com.intellij.patterns.ElementPattern
810import com.intellij.patterns.PlatformPatterns
911import com.intellij.psi.PsiElement
12+ import com.intellij.psi.PsiFile
13+ import com.intellij.psi.impl.source.tree.injected.MultiHostRegistrarImpl
14+ import com.intellij.psi.impl.source.tree.injected.Place
1015import org.jetbrains.plugins.less.LESSLanguage
1116
1217class StyledComponentsInjector : MultiHostInjector {
@@ -40,11 +45,22 @@ class StyledComponentsInjector : MultiHostInjector {
4045 registrar.addPlace(thePrefix, theSuffix, injectionHost, range)
4146 }
4247 registrar.doneInjecting()
48+ val result = getInjectionResult(registrar) ? : return
49+ val injectedFile = result.second
50+ val injectedFileRanges = result.first.map { TextRange (it.range.startOffset, it.range.endOffset - it.suffix.length) }
51+
52+ if (injectedFileRanges.size > 1 ) {
53+ injectedFile.putUserData(INJECTED_FILE_RANGES_KEY , injectedFileRanges)
54+ }
4355 }
56+ }
4457
58+ private fun getInjectionResult (registrar : MultiHostRegistrar ): Pair <Place , PsiFile >? {
59+ val result = (registrar as MultiHostRegistrarImpl ).result
60+ return if (result == null || result.isEmpty()) null
61+ else result[result.size - 1 ]
4562 }
4663 data class PlaceInfo (val elementPattern : ElementPattern <JSStringTemplateExpression >,
4764 val prefix : String? = null ,
4865 val suffix : String? = null )
49-
5066}
0 commit comments