¿Cómo puedo resaltar sintaxis los límites del rango de Ruby en gtksourceview3.0?

¿Cómo puedo resaltar sintaxis los límites del rango de Ruby en gtksourceview3.0?

Hago la mayor parte de mi codificación en gedit, que resalta los números enteros y otras sintaxis. Cuando uso un rango de números enteros en Ruby, representado como 0..3por ejemplo, los números enteros no se resaltan correctamente y, en cambio, tienen el color de texto normal. Lo comprobé /usr/share/gtksourceview3.0/language-specs/ruby.lang, pero desgraciadamente la solución parece ser mucho más complicada de lo que había previsto. ¿Como puedo solucionar este problema?

Respuesta1

Bueno, ahora mismo puedo sugerir sólo una solución de "fuerza bruta". Esta tarea consiste en conocer expresiones regulares.

Aquí lo tienes.

En primer lugar, decidí definir una nueva expresión regular que coincida con todo el rango, en lugar de redefinirla decimal, pero usa los mismos estilos. Hay 3 pasos.

Por cierto,esta es una guíaacerca de las especificaciones de idioma para gedit.

Estilos

Primero definamos los estilos.

En la sección <styles>insertar antes decimal:

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

Pareo

Luego en la sección <definitions>insertar 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 expresión regularcoincide con rangos sólo decimales(siempre hay margen de mejora) como por ejemplo

3..7
3...7
3 .. 7
3 ... 7

Todas las expresiones regulares utilizadas son PCRE (compatibles con Perl). En mi opinión, la mejor manera sería hojearDocumento de expresiones regulares de Perl. Así que puedes inventar el tuyo propio y combinarlo como quieras.

Invocar coincidencia

Para forzar el resaltado de sintaxis use esta expresión debemos ponerlaantesdecimal en la sección <include>:

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

¡Y reinicia Gedit!

información relacionada