【问题标题】:In WebStorm, is there a way to automatically inject a language into an argument of a particular function?在 WebStorm 中,有没有办法自动将语言注入到特定函数的参数中?
【发布时间】:2020-06-12 16:58:18
【问题描述】:

这是我的代码的样子。

/**
 * @param {string} css
 * @param {string} [otherParam]
 */
const addStyle = (css, otherParam) => {
  // Do stuff...
};

addStyle('#element{font-weight:bold;}', 'Some string of text');

这是我知道的当前的手动和理论方法来实现这一点。

1。手动注射

这很好用,但我希望它是自动的。

第 1 步:

第 2 步:

结果:

2。注入注释

这不起作用,因为它将 CSS 注入函数的所有参数。

让它工作的唯一方法是将每个参数放在一个单独的行上,像这样,但我希望它是自动的,而不需要每次都插入注释行。这是我目前使用的方法。

3。语言注入设置

我试着搞砸了一段时间,但我似乎无法弄清楚。

+ jsLiteralExpression().withSuperParent(2, jsLiteralExpression().withText(string().startsWith("addStyle(")))

【问题讨论】:

    标签: webstorm


    【解决方案1】:

    自定义语言注入规则在这里似乎适用于您的测试代码。在 Windows 10 上使用 PhpStorm 2020.1.2 在纯 JavaScript 文件中进行测试:

    实际规则:

    + jsArgument(jsReferenceExpression().withQualifiedName("addStyle"), 0)
    

    【讨论】:

    • 感谢您的帮助。这肯定让我朝着正确的方向前进!它似乎适用于字符串,但不适用于连接字符串。示例addStyle('.bold{font-weight:bold;}' + '.underline{text-decoration:underline;}')
    • 在 PHP 上下文中工作(但它使用不同的“注入函数”来决定注入的位置)。必须特定于 JavaScript 领域的注入支持(尤其是串联)(因为 PHP 具有更高级的处理能力——例如,SQL 命令经常被拆分为多个串联等)。您将在new RegExp('^.*' + '$') 中看到相同的行为。最好将其作为错误/功能请求报告给 WebStorm 开发人员(并返回票号):youtrack.jetbrains.com/issues/WEB
    • 看起来可能是这个youtrack.jetbrains.com/issue/WEB-8233
    • 制作一张新票,提供您的自定义语言注入规则并显示有效和无效的示例,并让 WebStorm 开发人员对其进行研究。也许自动语言注入的工作方式与手动注入不同(通过注释或通过 IDE GUI 纯手动)。 P.S. 我还尝试了更简单的 + jsArgument("addStyle", 0) 模式 .. 它表现出完全相同的行为。
    猜你喜欢
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多