Как подсветить синтаксис границ диапазона Ruby в gtksourceview3.0?

Как подсветить синтаксис границ диапазона Ruby в gtksourceview3.0?

Я пишу большую часть кода в 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!

Связанный контент