Eu faço a maior parte da minha codificação no gedit, que destaca números inteiros e outras sintaxes. Quando eu uso um intervalo de números inteiros em Ruby, representado como 0..3
por exemplo, os números inteiros não são destacados corretamente e têm a cor normal do texto. Eu verifiquei /usr/share/gtksourceview3.0/language-specs/ruby.lang
, mas, infelizmente, a solução parece ser muito mais complicada do que eu esperava. Como posso resolver este problema?
Responder1
Bem, neste momento posso sugerir apenas uma solução de “força bruta”. Esta tarefa envolve conhecer expressões regulares.
Aqui está.
Primeiro de tudo decidi definir uma nova expressão regular que corresponda a todo o intervalo, em vez de redefinir decimal
, mas use os mesmos estilos. Existem 3 etapas.
Por falar nisso,este é um guiasobre especificações de idioma para gedit.
Estilos
Vamos definir os estilos primeiro.
Na seção <styles>
inserir antes decimal
:
<style id="range" _name="Range" map-to="def:decimal"/>
Coincidindo
Então, na seção, <definitions>
insira antes decimal
:
<context id="range" style-ref="decimal">
<match>(?<![\w\.])(([1-9](_?[0-9])*|0)\s*\.\.\.?\s*([1-9](_?[0-9])*|0))(?![\w\.])</match>
</context>
Esta expressão regularcorresponde apenas a intervalos decimais(sempre há espaço para melhorias), como
3..7
3...7
3 .. 7
3 ... 7
Todas as expressões regulares usadas são PCRE (compatíveis com Perl). A melhor maneira, na minha opinião, seria folhearDocumento de expressões regulares Perl. Então você pode inventar o seu próprio e combinar com o que quiser.
Invocar correspondência
Para forçar o realce de sintaxe use esta expressão, devemos colocá-laantesdecimal na seção <include>
:
<context id="ruby" class="no-spell-check">
<include>
...
<context ref="range"/>
<context ref="decimal"/>
...
</include>
</context>
E reinicie o Gedit!