From 7c18e561af1da2c98d12fc14855b9fc2ced0aaf4 Mon Sep 17 00:00:00 2001 From: Jochem Pouwels Date: Sun, 27 Dec 2020 14:09:54 +0100 Subject: [PATCH 1/3] Initial support for Inlay Param Exclude list... --- .../codeInsight/LuaParameterHintsProvider.kt | 36 ++++++++++++++----- src/main/resources/LuaBundle.properties | 9 ++++- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/tang/intellij/lua/codeInsight/LuaParameterHintsProvider.kt b/src/main/java/com/tang/intellij/lua/codeInsight/LuaParameterHintsProvider.kt index e53649fbc..15e9eb728 100644 --- a/src/main/java/com/tang/intellij/lua/codeInsight/LuaParameterHintsProvider.kt +++ b/src/main/java/com/tang/intellij/lua/codeInsight/LuaParameterHintsProvider.kt @@ -23,16 +23,27 @@ import com.intellij.codeInsight.hints.Option import com.intellij.psi.PsiElement import com.intellij.psi.util.PsiTreeUtil import com.tang.intellij.lua.psi.* +import com.tang.intellij.lua.lang.* import com.tang.intellij.lua.search.SearchContext import com.tang.intellij.lua.ty.* import java.util.* +import com.intellij.codeInsight.hints.settings.ParameterNameHintsSettings +import com.intellij.ide.plugins.PluginManager +import com.intellij.openapi.diagnostic.Logger +import com.tang.intellij.lua.LuaBundle +import com.tang.intellij.lua.psi.impl.LuaCallExprImpl +import com.tang.intellij.lua.psi.impl.LuaListArgsImpl +import java.util.stream.Collectors /** * Created by TangZX on 2016/12/14. */ class LuaParameterHintsProvider : InlayParameterHintsProvider { + companion object { + private val log: Logger = Logger.getInstance("JOCHEM") + private val ARGS_HINT = Option("lua.hints.show_args_type", "Show argument name hints", true) @@ -81,24 +92,21 @@ class LuaParameterHintsProvider : InlayParameterHintsProvider { list.add(InlayInfo(paramInfo.name, expr.node.startOffset)) true } - } - else if (psi is LuaParamNameDef) { + } else if (psi is LuaParamNameDef) { if (PARAMETER_TYPE_HINT.get()) { val type = psi.guessType(SearchContext.get(psi.project)) if (!Ty.isInvalid(type)) { return listOf(InlayInfo("$TYPE_INFO_PREFIX${type.displayName}", psi.textOffset + psi.textLength)) } } - } - else if (psi is LuaNameDef) { + } else if (psi is LuaNameDef) { if (LOCAL_VARIABLE_HINT.get()) { val type = psi.guessType(SearchContext.get(psi.project)) if (!Ty.isInvalid(type)) { return listOf(InlayInfo("$TYPE_INFO_PREFIX${type.displayName}", psi.textOffset + psi.textLength)) } } - } - else if (psi is LuaFuncBodyOwner) { + } else if (psi is LuaFuncBodyOwner) { val paren = psi.funcBody?.rparen if (FUNCTION_HINT.get() && paren != null) { val type = psi.guessReturnType(SearchContext.get(psi.project)) @@ -111,14 +119,24 @@ class LuaParameterHintsProvider : InlayParameterHintsProvider { return list } - override fun getHintInfo(psiElement: PsiElement): HintInfo? = null + override fun getHintInfo(element: PsiElement): HintInfo? { + if (element !is LuaCallExpr) { + return null + } else { + val callExpression = element as LuaCallExpr + val luaListArgs = callExpression.args as LuaListArgsImpl + return HintInfo.MethodInfo(callExpression.text, luaListArgs.exprList.stream().map { expr -> expr.text }.collect(Collectors.toList())); + } + } + + override fun getBlacklistExplanationHTML(): String { + return LuaBundle.message("inlay.hints.blacklist.pattern.explanation") + } override fun getDefaultBlackList(): Set { return HashSet() } - override fun isBlackListSupported() = false - override fun getSupportedOptions(): List