From c85610f9c58b0927b83b38ea01c8cd415d78ac29 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 29 Jun 2016 13:02:30 +0300 Subject: [PATCH] prioritize compatible file types #WEB-7856 fixed --- .../impl/providers/FileReferenceCompletionImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceCompletionImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceCompletionImpl.java index c0f7361bd9aa..30f13f697c3a 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceCompletionImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceCompletionImpl.java @@ -15,10 +15,14 @@ */ package com.intellij.psi.impl.source.resolve.reference.impl.providers; +import com.intellij.codeInsight.completion.PrioritizedLookupElement; +import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Iconable; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileSystemItem; import com.intellij.psi.PsiNamedElement; import com.intellij.psi.search.PsiElementProcessor; @@ -90,6 +94,7 @@ public class FileReferenceCompletionImpl extends FileReferenceCompletion { } } + final FileType[] types = reference.getFileReferenceSet().getSuitableFileTypes(); final THashSet set = new THashSet(collector.getResults(), VARIANTS_HASHING_STRATEGY); final PsiElement[] candidates = PsiUtilCore.toPsiElementArray(set); @@ -100,6 +105,10 @@ public class FileReferenceCompletionImpl extends FileReferenceCompletion { if (item == null) { item = FileInfoManager.getFileLookupItem(candidate); } + if (candidate instanceof PsiFile && item instanceof LookupElement && + types.length > 0 && ArrayUtil.contains(((PsiFile)candidate).getFileType(), types)) { + item = PrioritizedLookupElement.withPriority((LookupElement)item, Double.MAX_VALUE); + } variants[i] = item; }