IntelliLang 配置
配置
配置对话框提供以下选项:
XML 文本的语言注入
XML 属性的语言注入
方法参数的语言注入
高级设置允许您更改已识别的基础注解的名称以及运行时执行模式验证的方式。
截图
以下截图展示了一些可以调整的配置选项,并将在接下来的部分中进行描述。



语言注入
在 设置 对话框 (Ctrl+Alt+S) 中导航到 Editor | Language Injections。 此对话框允许您配置 XML 文本、属性和方法参数的语言注入功能。 使用工具栏中的按钮或上下文菜单操作来添加、删除、复制或导入新条目。 要添加新条目,必须首先选择适当的组。
可以使用 上移 和 下移 按钮重新排序条目。 这对于定义不同 XML 注入条目的优先级可能很重要。 如果一个条目匹配,则不会应用更多的注入,除非注入指定了一个 值模式。
XML 文本
单击 并从列表中选择 XML Attribute Injection。 添加新的 XML 注入后,选择要注入的语言 ID,并可选地指定构成注入上下文的前缀/后缀。
在 XML 标签 窗格中,指定本地名称(不带任何命名空间前缀的名称)和围绕应被视为所选语言的文本的 XML 标签的命名空间 URI。 名称 字段不应为空,但 命名空间 字段是可选的。
本地名称 字段接受正则表达式,这使得可以指定例如多个标签名称(name1|name2 )、不区分大小写的名称(例如, (?i)tagname 匹配 tagname 和 TagName )等。 请确保不要输入任何空白字符,因为它们对于匹配是有意义的。
XML 属性
这与 XML 文本配置类似。 然而,可以将 名称 留空,这意味着配置将应用于任何匹配配置名称的属性,而不管其包含的 XML 标签。
属性的名称采用属性的本地名称,并且也以正则表达式指定。 这可以通过指定名称 "on.*" 来匹配 HTML 事件处理程序属性。 属性名称也可以为空(除非标签名称也为空),这意味着配置适用于包含标签的所有属性。
高级 XML 选项
高级 窗格用于 XML 文本和属性,允许对注入过程进行更精细的控制。
值模式
此字段接受一个正则表达式,用于确定应将语言注入到 XML 文本或属性值的哪一部分。 这可以用于仅将语言注入到匹配某个模式的值中,或者将其注入到匹配模式的多个部分中。 这是通过使用模式的第一个捕获组作为注入目标来完成的。
示例:
[$#]\{(.*?)\}
这与 JSP/JSF 表达式语言使用的模式相匹配。
^javascript:(.*)
这与可用于超链接 href 中执行 JS 代码的 javascript 协议相匹配。
XPath 条件
此字段接受一个 XPath 表达式,可用于比仅提供名称和命名空间 URI 更精确地定位注入目标。 表达式的上下文是在 XML 文本注入的情况下为周围的 XML 标签,在 XML 属性注入的情况下为属性本身。
示例:
lower-case(@type)='text/javascript'
这将注入限制为其 type 属性包含值 "text/javascript" 的标签。
可以使用 XPath 扩展函数 ,例如, lower-case()。 此外,还有三个附加函数可用于确定当前文件的名称、扩展名和文件类型: file-name()、 file-ext() 和 file-type()。 您还可以使用普通的代码补全来获取可用函数的列表。
方法参数
如果由于某种原因无法使用注入注解,这是利用 IntelliLang 功能的一种可能性。 这主要适用于配置第三方/库方法以及仍需使用 Java 1.4 的项目。
语言选择与上述描述的相同。 要选择某个方法的一个或多个参数,首先通过输入名称(文本框支持补全)或使用通过 [...] 按钮提供的类选择器选择其包含的类。 接下来,使用 "方法名称" 窗格中的 [...] 按钮选择一个方法(无法手动编辑方法名称)。 一旦选择了方法, 参数 窗格中的表格将填充所选方法的参数。 选中第一列中的复选框,以将所选语言注入传递给此参数的参数中。 请注意,仅可以选择 String 类型的参数。
IntelliJ IDEA 核心(更确切地说是 Inspection Gadgets)已经有一个检查某些知名方法的参数是否为有效正则表达式的检查功能。 然而,IntelliLang 可以提供更详细的错误消息以及正则表达式支持插件的所有功能。
默认为某些标准 XPath API 配置的 XPath 语言由 XPathView + XSLT-Support 插件提供,该插件可在 此处获取。
导入配置条目
要从另一个 PhpStorm 安装中导入注入配置,请使用工具栏中的 导入 按钮,并从 IDEA-CONFIG-HOME/options 或包含一些通过文件 | 管理 IDE 设置 | 导出设置导出的 PhpStorm 设置的 JAR 文件中选择文件 "IntelliLang.xml"。 选择文件后,将显示一个新对话框,其中显示该文件中包含的条目。 使用 删除 按钮删除您不想导入的所有条目。 请注意,这不会 更改所选的配置文件。
这种选择性导入功能使团队可以轻松共享某些配置,而不会像通过核心文件 | 导入设置操作导入设置时那样丢失任何本地条目。
为了防止数据不一致,仅当现有配置未更改或已使用 应用 按钮保存时,才可以进行导入。
高级设置
高级配置选项卡允许您指定应使用的基础注解的不同名称。 这有助于避免对不希望或无法使用的外部代码的任何依赖。 自定义注解应仅提供与原始注解相同的属性,即 value 对于所有注解,以及一个可选的(默认值为 "") prefix 和 后缀 用于 @Language 替换。
在此,您还可以配置插件应为 @Pattern 验证生成的运行时检查类型:
无插桩:不会插入任何检查,也不会触及任何已编译的类文件。
使用 断言 的插桩:模式验证由 -ea JVM 开关控制,并抛出 AssertionError。 这是推荐的方式,因为对于经常调用的方法,可能会对性能产生负面影响。
使用 IllegalArgument-(用于方法参数)和 IllegalStateExceptions(用于返回值)的插桩。 这与 PhpStorm 的 @NotNull 插桩相同。
贡献的配置
可以从此处下载并导入其他配置。 这种社区效应有助于最大限度地减少配置工作量,并使 IntelliLang 更加易于使用。