针对不带引号的属性的HTML语法突出显示

时间:2013-12-07 12:25:20

标签: html5 sublimetext2 syntax-highlighting

无论这种方法是否合适:

有没有办法让Sublime Text能够突出显示不带引号的属性的HTML语法?即

<div class=foo data-label=bar>

我已设法修复导致不带引号的id属性的问题,以便按照these instructions打破整个文档的语法。

然而,这仍然不允许语法突出显示我所追求的不带引号的属性。

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

不带引号的属性值语法突出显示不起作用的原因是因为Sublime正在查找带引号的字符串。没有引号,没有任何字符串正则表达式匹配。要解决此问题,您必须添加entity.other.attribute-value.html中包含的新范围meta.tag,开始在=匹配,匹配[0-9a-zA-Z-_]一次或多次,并在空格或>停止匹配。然后,您可以将此新范围添加到您的配色方案中并相应地突出显示它。

答案 1 :(得分:3)

我想说,任何使这种情况发生的企图都是不一致的。原因如下:

<img src="whatever" alt="This is some text" class="something" />

<img src=whatever alt=This is some text class=something />

<img src=whatever alt=This is some text with > in it class=something />

查看突出显示第二个的方式?您放入的任何正则表达式不仅需要能够告诉您文本的内容,还需要告诉它的 intent ,否则它将无法分辨属性值的停止位置。即使在这里,你和我都知道第二个应该突出显示,但正则表达式无法以这种方式读取它。然后是第三个......

如果您要为此向Sublime添加正则表达式,则可能无法正确突出显示。这就是文本编辑器被编程为寻找封闭字符串的原因;因为当一个字符串被“标记”包围时,就不会猜到字符串的结束位置。

答案 2 :(得分:1)

这实际上是一场很好的辩论

实际上有很多标签都带有没有值的属性

<input type="text" name="country" value="Norway" readonly>

需要注意的要点是readonly这是有效的HTML语法,因为属性没有=,也没有任何值values

所以升级只读不应该在那里

考虑到这一点,应该考虑额外的努力

同样,对于输入,我们还有一个这样的attrible disabled

<input type="text" name="country" value="Norway" disabled>

让我们尝试以几种方式键入两者并检查SO如何响应

<input type=text value=blah blab readonly>

检查第二个标记是否为红色。

所以这是肯定的,所以我相信带空格的属性值应该引用其他编辑器或标记浏览器shell会将其视为其他属性。

没有值的属性&#39; =&#39;也被认为是。

但是根据我的说法

 <input type=text value=  blab readonly>

以上值=应该升级为语法错误; SO仍将其标记为蓝色

最后再尝试一下

<input type=text value=   readonly>

再次参见上文,readonly标记为蓝色表示其将readonly视为属性的值,但实际上它是一个立即属性&amp;应该升华

现在你如何决定天气升华与否?

上面的O / p在图中 enter image description here

这意味着浏览器shell将其解释为值,而不是属性和文本框仍然可编辑