Como posso destacar a sintaxe dos limites do intervalo Ruby em gtksourceview3.0?

Como posso destacar a sintaxe dos limites do intervalo Ruby em gtksourceview3.0?

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..3por 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>(?&lt;![\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!

informação relacionada