我的大部分编码都是在 gedit 中完成的,它突出显示了整数和其他语法。当我在 Ruby 中使用整数范围(例如表示)时0..3
,整数没有正确突出显示,而是正常的文本颜色。我查了一下/usr/share/gtksourceview3.0/language-specs/ruby.lang
,但是,唉,解决方案似乎比我预期的要复杂得多。我该如何解决这个问题?
答案1
好吧,现在我可能只建议“暴力”解决方案。这项任务就是要了解正则表达式。
这里是。
首先,我决定定义一个新的正则表达式来匹配整个范围,而不是重新定义decimal
,但使用相同的样式。有 3 个步骤。
顺便一提,这是指南关于 gedit 的语言规范。
风格
让我们首先定义样式。
在部分<styles>
之前插入decimal
:
<style id="range" _name="Range" map-to="def:decimal"/>
匹配
然后在部分<definitions>
之前插入decimal
:
<context id="range" style-ref="decimal">
<match>(?<![\w\.])(([1-9](_?[0-9])*|0)\s*\.\.\.?\s*([1-9](_?[0-9])*|0))(?![\w\.])</match>
</context>
这个正则表达式仅匹配小数范围(总是有改进的空间)例如
3..7
3...7
3 .. 7
3 ... 7
所有使用的正则表达式都是 PCRE(Perl 兼容)。我认为最好的方法是浏览Perl 正则表达式文档。所以你可以发明你自己的并匹配你想要的任何东西。
调用匹配
要强制语法突出显示使用此表达式,我们必须将其放在前小数部分<include>
:
<context id="ruby" class="no-spell-check">
<include>
...
<context ref="range"/>
<context ref="decimal"/>
...
</include>
</context>
并重新启动 Gedit!