diff --git a/java/java-impl/src/com/intellij/codeInsight/hints/JavaHintUtils.kt b/java/java-impl/src/com/intellij/codeInsight/hints/JavaHintUtils.kt index 389823ead5f4..2ee5bafae803 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hints/JavaHintUtils.kt +++ b/java/java-impl/src/com/intellij/codeInsight/hints/JavaHintUtils.kt @@ -15,7 +15,6 @@ */ package com.intellij.codeInsight.hints -import com.intellij.codeInsight.hints.settings.ParameterNameHintsSettings import com.intellij.psi.* import com.intellij.psi.impl.source.resolve.graphInference.PsiPolyExpressionUtil import com.intellij.psi.impl.source.tree.java.PsiMethodCallExpressionImpl @@ -67,7 +66,8 @@ object JavaInlayHintsProvider { with(resultSet) { getVarArgInlay(info)?.let { add(it) } - if (ParameterNameHintsSettings.getInstance().isShowForParamsWithSameType) { + val hintsProvider = JavaInlayParameterHintsProvider.getInstance() + if (hintsProvider.isShowForParamsWithSameType.get()) { addAll(createSameTypeInlays(args)) } @@ -82,7 +82,8 @@ object JavaInlayHintsProvider { if (params.isEmpty()) return false if (params.size == 1) { if (isBuilderLike(callExpression, method) || isSetterNamed(method)) return false - if (ParameterNameHintsSettings.getInstance().isDoNotShowIfMethodNameContainsParameterName + val hintsProvider = JavaInlayParameterHintsProvider.getInstance() + if (hintsProvider.isDoNotShowIfMethodNameContainsParameterName.get() && isParamNameContainedInMethodName(params[0], method)) return false } return true diff --git a/java/java-impl/src/com/intellij/codeInsight/hints/JavaInlayParameterHintsProvider.kt b/java/java-impl/src/com/intellij/codeInsight/hints/JavaInlayParameterHintsProvider.kt index f4d670ddc0c8..d82c0ccee1ea 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hints/JavaInlayParameterHintsProvider.kt +++ b/java/java-impl/src/com/intellij/codeInsight/hints/JavaInlayParameterHintsProvider.kt @@ -15,13 +15,18 @@ */ package com.intellij.codeInsight.hints +import com.intellij.lang.java.JavaLanguage import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.PsiCallExpression import com.intellij.psi.PsiElement import com.intellij.psi.PsiMethod class JavaInlayParameterHintsProvider : InlayParameterHintsProvider { - + + companion object { + fun getInstance() = InlayParameterHintsExtension.forLanguage(JavaLanguage.INSTANCE) as JavaInlayParameterHintsProvider + } + override fun getMethodInfo(element: PsiElement): MethodInfo? { if (element is PsiCallExpression) { val resolvedElement = element.resolveMethodGenerics().element @@ -82,4 +87,18 @@ class JavaInlayParameterHintsProvider : InlayParameterHintsProvider { "org.slf4j.Logger.*" ) + val isDoNotShowIfMethodNameContainsParameterName = Option("java.method.name.contains.parameter.name", + "Do not show if method name contains parameter name", + true) + + val isShowForParamsWithSameType = Option("java.multiple.params.same.type", + "Show for non-literals in case of multiple params with the same type", + false) + + override fun getSupportedOptions(): List