【问题标题】:Get parameter name in Clion plugin在 Clion 插件中获取参数名称
【发布时间】:2020-07-26 12:53:54
【问题描述】:

我正在为需要访问调用者参数名称的 Clion (C++) 开发插件,例如如果声明了一个函数:

void fun(int a);

被叫

fun(42);

当在42 PsiElement 上调用意图时,它应该获得相应的参数名称,在这种情况下为"a"

在 Intellij (Java) 的类似插件中,我使用包含参数列表的 PsiCallExpression.resolveMethod() 获取参数名称。但是,我无法弄清楚如何在 Clion 插件中执行此操作。我可以获得相应OCCallExpression 的引用,但它似乎不包含对声明函数的引用。我尝试使用ReferencesSearch.search(),但它没有找到函数的声明。

同时IDE本身显示所有参数名称提示: 所以我想这一定是可能的。

如何获取给定调用者参数表达式的参数名称?

【问题讨论】:

    标签: plugins clion


    【解决方案1】:

    请看InlayParameterHintsExtension.forLanguage(OCLanguage.getInstance())InlayParameterHintsProvider.getParameterHints

    【讨论】:

    • 如果在 Clion 中启用了参数提示,效果很好。但是,如果它们被关闭,则 getParameterHints() 返回一个空列表。即使禁用了参数提示,有没有办法获取参数名称?
    • 在这种情况下,您需要查看com.intellij.codeInsight.navigation.actions.GotoDeclarationHandler#getGotoDeclarationTargets 和 Psi-tree 分析。调用代价高昂,需要可取消并在后台执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多