2014-10-17 124 views
2

我使用angularJS,并有各种命令遵循命名约定,如“应用程序数据网格”,“应用程序滑块”,“应用程序传送带”或“应用程序编译一些“模板”等。实质上,它是正常的角度指令命名约定[app name]-[dash delimited words]。崇高文本HTML语言语法高亮无法正确匹配它们的正则表达式。它会突出显示"<app-carousel""<app-some-long-directive-name"中的“应用”,但不会突出显示整个标签名称。崇高的文本语法突出显示正则表达式不工作

这里是在HTML.tmLanguage文件中的预定义的正则表达式:

(&lt;)([a-zA-Z0-9:]++)(?=[^&gt;]*&gt;&lt;/\2&gt;) 

我试图第二匹配组的结肠之后加入破折号:

(&lt;)([a-zA-Z0-9:-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;) 

第二正则表达式的正则表达式测试仪工作,但在Sublime Text中不起作用。

此外,我已经下载了一个AngularJS插件,它给了我一个AngularJS-HTML语言定义......它也有同样的问题。

如何修复正则表达式,使其与突出显示的完整标记名称相匹配?

+0

我不知道这个表达式应该如何搭配你贴什么,什么测试你尝试这是什么?你为你的示例文本使用? – Vajura 2014-10-17 05:32:58

+0

我使用的链接(http://www.regexr.com/ “RegExr”)来测试以下内容:'([A-ZA-Z0-9: - ] +)'它匹配,因为我希望它会在RegExr中匹配,尽管它在Sublime中不匹配。Sublime的原RegEx在RegExr中不起作用(双倍加上它),也许是由于使用了不同的引擎?我用“blah-blah-blah”作为我的示例文本,只是为了测试所有三个单词和他们的连字符是否匹配。 – 2014-10-20 18:24:41

+0

'++'确实在正则表达式中有意义:它表示没有回溯。更具体地说,在这种情况下,它意味着一旦发现匹配'(<)',只有'[a-zA-Z0-9: - ] +'的最佳匹配;如果这不能扩展为匹配整个正则表达式,它将尝试找到另一个匹配'(<)'。例如,'< app-foo id =“foo”> < app-foo >''会失败,因为'[a-zA-Z0-9: - ] ++'无法匹配'app-foo',因为它可以匹配'app-foo id =“foo”'。 (你也可以用'?+'和'{m,n} +'。) – 2014-11-09 15:48:47

回答

0

您是否在用户设置中将HTML添加到您的ignore_package阵列中? 使用该条目,您将覆盖默认的HTML语法包,因此会迫使崇高用户HTML.tmLanguage

我发现this answerBoundinCode他解释它,这实际上对我来说是伎俩。

4

转到首选项>>设置 - 用户。

在此JSON添加到ignored_pa​​ckages阵列名为 “HTML” 的ITEN,像这样:

"ignored_packages": 
    [ 
     "Vintage", 
     "HTML" 
    ] 

保存文件。

现在转到首选项>>浏览Packeges,复制HTML目录并将其重命名为“HTMLAngularJS”。

输入到HTMLAngularJS目录和文件重命名为“HTML.tmLanguage”到“HTMLAngularJS.tmLanguage”。

编辑 “HTMLAngularJS.tmLanguage” 文件,发现这两个正则表达式:

<string>(&lt;)([a-zA-Z0-9:]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string> Line 45 

and 

<string>(&lt;/?)([a-zA-Z0-9:]+)</string> Line 514 

只需添加斜线和 - 双点之后,应该是这样的:

<string>(&lt;)([a-zA-Z0-9:\-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string> 

and 

<string>(&lt;/?)([a-zA-Z0-9:\-]+)</string> 

保存文件和要开心!

问候!

+0

当我保存首选项文件时,它说包不存在。当我浏览软件包时,没有一个叫做HTML。我不知道它在ST3中是否有所不同。 – eddiemoya 2016-04-27 14:09:22

相关问题