diff --git a/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassFeaturesProvider.kt b/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassFeaturesProvider.kt index 51d629e0592d..e85427d1fb53 100644 --- a/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassFeaturesProvider.kt +++ b/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassFeaturesProvider.kt @@ -8,6 +8,7 @@ import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiElement +import com.intellij.psi.PsiNamedElement class SearchEverywhereClassFeaturesProvider : SearchEverywhereClassOrFileFeaturesProvider(ClassSearchEverywhereContributor::class.java) { companion object { @@ -26,6 +27,10 @@ class SearchEverywhereClassFeaturesProvider : SearchEverywhereClassOrFileFeature PRIORITY to elementPriority, ) + (element as? PsiNamedElement)?.name?.let { elementName -> + data.putAll(getNameMatchingFeatures(elementName, searchQuery)) + } + data.putIfValueNotNull(IS_DEPRECATED, isDeprecated(presentation)) data.putIfValueNotNull(IS_ACCESSIBLE_FROM_MODULE, isAccessibleFromModule(element, cache?.openedFile)) return data diff --git a/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassOrFileFeaturesProvider.kt b/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassOrFileFeaturesProvider.kt index 08e9e8928dc8..9575fa11a5b6 100644 --- a/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassOrFileFeaturesProvider.kt +++ b/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereClassOrFileFeaturesProvider.kt @@ -17,6 +17,7 @@ import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiElement import com.intellij.psi.PsiFileSystemItem +import com.intellij.textMatching.PrefixMatchingUtil import com.intellij.util.Time abstract class SearchEverywhereClassOrFileFeaturesProvider(supportedTab: Class>) @@ -234,5 +235,25 @@ abstract class SearchEverywhereClassOrFileFeaturesProvider(supportedTab: Class { + fun changeToCamelCase(str: String): String { + val words = str.split('_') + val firstWord = words.first() + if (words.size == 1) { + return firstWord + } else { + return firstWord.plus( + words.subList(1, words.size) + .joinToString(separator = "") { s -> s.replaceFirstChar { it.uppercaseChar() } } + ) + } + } + + val features = mutableMapOf() + PrefixMatchingUtil.calculateFeatures(nameOfFoundElement, searchQuery, features) + return features.mapKeys { changeToCamelCase(it.key) } // Change snake case to camel case for consistency with other feature names. + .mapValues { if (it.value is Double) roundDouble(it.value as Double) else it.value } + } + protected data class Cache(val fileTypeStats: Map, val openedFile: VirtualFile?) } \ No newline at end of file diff --git a/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereFileFeaturesProvider.kt b/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereFileFeaturesProvider.kt index 8fc6a42aad3f..a90069b00fbf 100644 --- a/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereFileFeaturesProvider.kt +++ b/plugins/search-everywhere-ml/src/com/intellij/ide/actions/searcheverywhere/ml/features/SearchEverywhereFileFeaturesProvider.kt @@ -13,7 +13,6 @@ import com.intellij.openapi.fileEditor.impl.EditorHistoryManager import com.intellij.openapi.util.io.FileUtil import com.intellij.psi.PsiElement import com.intellij.psi.PsiFileSystemItem -import com.intellij.textMatching.PrefixMatchingUtil import com.intellij.util.PathUtil import com.intellij.util.Time.* @@ -53,7 +52,11 @@ internal class SearchEverywhereFileFeaturesProvider SearchEverywhereUsageTriggerCollector.TOTAL_SYMBOLS_AMOUNT_DATA_KEY to searchQuery.length, ) - data.putAll(getNameMatchingFeatures(item, searchQuery)) + + val nameOfItem = item.virtualFile.nameWithoutExtension + // Remove the directory and the extension if they are present + val fileNameFromQuery = FileUtil.getNameWithoutExtension(PathUtil.getFileName(searchQuery)) + data.putAll(getNameMatchingFeatures(nameOfItem, fileNameFromQuery)) if (item.isDirectory) { // Rest of the features are only applicable to files, not directories @@ -75,29 +78,6 @@ internal class SearchEverywhereFileFeaturesProvider return ReadAction.compute { favoritesManager.getFavoriteListName(null, item.virtualFile) != null } } - private fun getNameMatchingFeatures(item: PsiFileSystemItem, searchQuery: String): Map { - fun changeToCamelCase(str: String): String { - val words = str.split('_') - val firstWord = words.first() - if (words.size == 1) { - return firstWord - } else { - return firstWord.plus( - words.subList(1, words.size) - .joinToString(separator = "") { s -> s.replaceFirstChar { it.uppercaseChar() } } - ) - } - } - - // Remove the directory and the extension if they are present - val filename = FileUtil.getNameWithoutExtension(PathUtil.getFileName(searchQuery)) - - val features = mutableMapOf() - PrefixMatchingUtil.calculateFeatures(item.virtualFile.nameWithoutExtension, filename, features) - return features.mapKeys { changeToCamelCase(it.key) } // Change snake case to camel case for consistency with other feature names. - .mapValues { if (it.value is Double) roundDouble(it.value as Double) else it.value } - } - private fun isOpened(item: PsiFileSystemItem): Boolean { val openedFiles = FileEditorManager.getInstance(item.project).openFiles return item.virtualFile in openedFiles