Gedit personalizado resaltado de sintaxis para tontos?

15

Quiero hacer (tener, en realidad) un resaltado de sintaxis personalizado para gedit.

Habría solo algunos elementos diferentes:

Una línea que comienza con 2 pestañas. ----- Un color. Una línea que comienza con 3 pestañas. ----- Otro color. Una línea que comienza con 4 pestañas. ----- Otro color. y una línea que comienza con INT. o EXT. ----- Otro color.

Esto es para escribir un guión.

Miré la página wiki de definición de idioma para gedit, pero está muy por encima de mi cabeza.

¿Hay alguna manera simple de hacer esto?

YAS
fuente

Respuestas:

16

Lo siguiente se derivó del manual de referencia GtkSourceView, Language Definition v2.0 Tutorial and Reference .

Cree el archivo /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (como root), con el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<language id="screenplay" _name="Screenplay" version="2.0" _section="Markup">
  <metadata>
    <property name="mimetypes">text/plain</property>
    <property name="globs">*.script</property>
  </metadata>
  <styles>
    <style id="indent2" _name="2x indented"  map-to="def:comment" />
    <style id="indent3" _name="3x indented"  map-to="def:constant" />
    <style id="indent4" _name="4x indented"  map-to="def:identifier" />
    <style id="intext"  _name="INT. or EXT." map-to="def:statement" />
  </styles>
  <definitions>
    <context id="screenplay">
      <include>
        <context id="indent4" style-ref="indent4">
          <start>^\t\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent3" style-ref="indent3">
          <start>^\t\t\t</start>
          <end>$</end>
        </context>
        <context id="indent2" style-ref="indent2">
          <start>^\t\t</start>
          <end>$</end>
        </context>
        <context id="intext" style-ref="intext">
          <start>^(INT|EXT)\.</start>
          <end>$</end>
        </context>
      </include>
    </context>
  </definitions>
</language>

Asegúrese de que el archivo sea legible en todo el mundo ejecutando

sudo chmod 0644 /usr/share/gtksourceview-2.0/language-specs/screenplay.lang

Reiniciar gedit. Ahora, cualquier archivo con el nombre *.scriptque abra en gedit debería mostrar el tipo "Screenplay" en la barra de estado en la parte inferior. Las líneas con sangría con 2, 3 o 4 pestañas deben ser de color azul, magenta y cian, respectivamente, y las líneas que comienzan con INT. o EXT. será rojo y audaz.

Puede ajustar esto de varias maneras:

  • El .scriptsufijo del nombre del archivo se establece en la línea 5, en la propiedad "globs". Puede cambiar esto de la manera obvia e incluir varios valores si lo desea, separados por punto y coma ( ;).

  • Los colores que obtienes para el sangrado y el INT. y EXT. las líneas dependen del esquema de color particular que haya seleccionado para gedit. Son los colores de los estilos de comentario, constante, identificador y declaración (eso es lo que hace map-to="def:comment"etc.). Para obtener resultados diferentes, puede cambiar el esquema de color gedit (Edición> Preferencias> Fuentes y colores) o reorganizar los map-tovalores en las <style>etiquetas. Si desea más control, puede crear su propio esquema de color de la siguiente manera:

    cd /usr/share/gtksourceview-2.0/styles
    sudo cp classic.xml screenplay.xml
    

    Edite screenplay.xml (como root). Reemplace las primeras tres líneas sin comentarios por:

    <style-scheme id="screenplay" _name="Screenplay" version="1.0">
      <author>YAS</author>
      <_description>Screenplay color scheme</_description>
    

    Luego ajuste los colores (y quizás también otros estilos, por ejemplo bold="true") de los estilos def: comment, def: constant, def: identifier y def: Statement. Reinicie gedit nuevamente y cambie el esquema de color de gedit a Screenplay para ver sus nuevos colores. Tenga en cuenta que eso es un cambio global; es posible que desee volver a su esquema de color normal para editar otros archivos.

Tenga en cuenta que cada vez que cambie los archivos screenplay.lang o screenplay.xml, deberá reiniciar gedit para ver los resultados.

Andrew Schulman
fuente
Eso lo hizo! ¡INCREÍBLE!
YAS
Gracias, tuve un caso de uso similar, resaltando líneas relacionadas pero físicamente dispares con el mismo color y esto ayudó mucho.
Eloff