我使用angularJS,并且有各种指令遵循命名约定,如“app-data-grid”,“app-slider”,“app-carousel”或“app-compile-some-template”等。 ,它是[app name]-[dash delimited words]
的正常角度指令命名约定。 Sublime Text HTML语言语法突出显示与其正则表达式不正确匹配。它会突出显示"<app-carousel"
或"<app-some-long-directive-name"
中的“应用”,但不会突出显示整个代码名称。
以下是HTML.tmLanguage
文件中的预定义正则表达式:
(<)([a-zA-Z0-9:]++)(?=[^>]*></\2>)
我尝试在第二个匹配组的冒号后面添加一个破折号:
(<)([a-zA-Z0-9:-]++)(?=[^>]*></\2>)
第二个正则表达式在正则表达式测试中工作,但在Sublime Text中不起作用。
另外,我已经下载了一个AngularJS插件,它给了我一个AngularJS-HTML语言定义......它也有同样的问题。
如何修复正则表达式以使其与完整标记名称匹配以突出显示?
答案 0 :(得分:4)
转到首选项&gt;&gt;设置 - 用户。
在这个JSON上添加一个名为“HTML”的ignored_packages数组,如下所示:
"ignored_packages":
[
"Vintage",
"HTML"
]
保存文件。
现在转到偏好设置&gt;&gt;浏览Packeges,复制HTML目录并将其重命名为“HTMLAngularJS”。
输入HTMLAngularJS目录并将文件“HTML.tmLanguage”重命名为“HTMLAngularJS.tmLanguage”。
编辑“HTMLAngularJS.tmLanguage”文件,找到这两个正则表达式:
<string>(<)([a-zA-Z0-9:]++)(?=[^>]*></\2>)</string> Line 45
and
<string>(</?)([a-zA-Z0-9:]+)</string> Line 514
只需添加斜杠和 - 双点后,应该是这样的:
<string>(<)([a-zA-Z0-9:\-]++)(?=[^>]*></\2>)</string>
and
<string>(</?)([a-zA-Z0-9:\-]+)</string>
保存文件并开心!
问候!
答案 1 :(得分:1)
使用HTML Extended sublime插件
答案 2 :(得分:0)
您是否在用户设置中将HTML
添加到ignore_package
阵列?
使用该条目,您将覆盖默认的HTML语法包,因此强制sublime使用HTML.tmLanguage
。
我从this answer找到了BoundinCode,他解释了这一点,这实际上对我有用。