如何在 gtksourceview3.0 中语法突出显示 Ruby 范围边界?

如何在 gtksourceview3.0 中语法突出显示 Ruby 范围边界?

我的大部分编码都是在 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>(?&lt;![\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!

相关内容