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