Como posso sintonizar os limites do intervalo de Ruby no gtksourceview3.0?

2

Eu faço a maioria da minha codificação no gedit, que destaca inteiros e outras sintaxes. Quando eu uso um intervalo inteiro em Ruby, representado como 0..3 por exemplo, os números inteiros não são adequadamente destacados e são, em vez disso, 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?

    
por EMBLEM 08.10.2014 / 05:29

1 resposta

2

Bem, agora posso sugerir apenas uma solução de "força bruta". Esta tarefa é toda sobre conhecer expressões regulares.

Aqui está.

Antes de mais nada, decidi definir uma nova expressão regular que correspondesse a toda a faixa, em vez de redefinir decimal , mas use os mesmos estilos. Existem 3 etapas.

A propósito, este é um guia sobre as especificações de idioma para o gedit.

Estilos

Vamos definir estilos primeiro.

Na seção <styles> inserir antes de decimal :

<style id="range" _name="Range" map-to="def:decimal"/>

Correspondência

Em seguida, na seção <definitions> inserir antes de 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>

Essa expressão regular corresponde apenas a intervalos de decimal (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ível com Perl). O melhor para o meu modo de pensar seria através do Perl Regular Exbridions Doc . Então você pode inventar o seu e combinar com o que quiser.

Invocar correspondência

Para forçar o destaque da sintaxe, use esta expressão, devemos colocá-lo antes decimal na seção <include> :

<context id="ruby" class="no-spell-check">
  <include>
    ...
    <context ref="range"/>
    <context ref="decimal"/>
    ...
  </include>
</context>

E reinicie o Gedit!

    
por 25.11.2015 / 11:01

Tags