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