diff --git a/idea/idea.iml b/idea/idea.iml
index 80f037f3c40..d1133b53984 100644
--- a/idea/idea.iml
+++ b/idea/idea.iml
@@ -42,7 +42,7 @@
-
+
diff --git a/idea/src/org/jetbrains/kotlin/idea/references/KotlinFilePathReferenceContributor.kt b/idea/src/org/jetbrains/kotlin/idea/references/KotlinFilePathReferenceContributor.kt
index 48bdc30fdcd..d344bd857a3 100644
--- a/idea/src/org/jetbrains/kotlin/idea/references/KotlinFilePathReferenceContributor.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/references/KotlinFilePathReferenceContributor.kt
@@ -16,23 +16,43 @@
package org.jetbrains.kotlin.idea.references
+import com.intellij.codeInsight.lookup.LookupElement
import com.intellij.patterns.PlatformPatterns
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference
import com.intellij.psi.PsiReferenceRegistrar
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FilePathReferenceProvider
+import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference
import com.intellij.util.ProcessingContext
import org.jetbrains.kotlin.psi.KtStringTemplateExpression
import org.jetbrains.kotlin.psi.psiUtil.getContentRange
-import org.jetbrains.kotlin.psi.psiUtil.isPlainWithEscapes
+import org.jetbrains.kotlin.psi.psiUtil.isPlain
import org.jetbrains.kotlin.psi.psiUtil.plainContent
+import org.jetbrains.kotlin.idea.completion.KotlinCompletionCharFilter
class KotlinFilePathReferenceContributor : AbstractKotlinReferenceContributor() {
object KotlinFilePathReferenceProvider : FilePathReferenceProvider() {
override fun getReferencesByElement(element: PsiElement, context: ProcessingContext): Array {
if (element !is KtStringTemplateExpression) return PsiReference.EMPTY_ARRAY
- if (!element.isPlainWithEscapes()) return PsiReference.EMPTY_ARRAY
+ if (!element.isPlain()) return PsiReference.EMPTY_ARRAY
return getReferencesByElement(element, element.plainContent, element.getContentRange().startOffset, true)
+ .map {
+ if (it is FileReference) {
+ object: FileReference(it.fileReferenceSet, it.rangeInElement, it.index, it.text) {
+ override fun getVariants(): Array {
+ return super.getVariants()
+ .map {
+ (it as? LookupElement)?.apply {
+ putUserData(KotlinCompletionCharFilter.SUPPRESS_ITEM_SELECTION_BY_CHARS_ON_TYPING, Unit)
+ } ?: it
+ }
+ .toTypedArray()
+ }
+ }
+ }
+ else it
+ }
+ .toTypedArray()
}
}