Estoy tratando de cambiar un archivo de resaltado de Gedit. He modificado el archivo /usr/share/gtksourceview-3.0/language-specs/fortran.lang porque quiero cambiar los casos en los que el editor toma una declaración como comentario. El problema que tengo es que cuando elijo el nuevo esquema de resaltado, nada destaca, simplemente permanece como texto sin formato.
El archivo fortran.lang se abrió con permisos su y simplemente copié y pegué todo en un nuevo archivo Gedit y luego lo guardé como fortran_enhanced.lang en la misma carpeta. Los cambios que he realizado en el archivo original son estos:
Archivo original fortran.lang:
<language id="fortran" _name="Fortran 95" version="2.0" _section="Sources">
<metadata>
<property name="mimetypes">text/x-fortran</property>
<property name="globs">*.f;*.f90;*.f95;*.for</property>
<property name="line-comment-start">!</property>
</metadata>
<styles>
<style id="comment" _name="Comment" map-to="def:comment"/>
<style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="intrinsic" _name="Intrinsic function" map-to="def:builtin"/>
<style id="boz-literal" _name="BOZ Literal" map-to="def:base-n-integer"/>
<style id="decimal" _name="Decimal" map-to="def:decimal"/>
<style id="type" _name="Data Type" map-to="def:type"/>
</styles>
<default-regex-options case-sensitive="false"/>
<definitions>
<!-- Note: contains an hack to avoid considering ^COMMON a comment -->
<context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
<start>!|(^[Cc](\b|[^OoAaYy]))</start>
<include>
<context ref="def:escape"/>
<context ref="def:in-line-comment"/>
</include>
</context>
(...)
Archivo fortran_enhanced.lang modificado:
<!-- Note: changed language id and name -->
<language id="fortran_enhanced" _name="Fortran 95 2.0" version="2.0" _section="Sources">
<metadata>
<property name="mimetypes">text/x-fortran</property>
<!-- Note: removed *.f and *.for from file extensions -->
<property name="globs">*.f90;*.f95;</property>
<property name="line-comment-start">!</property>
</metadata>
<styles>
<style id="comment" _name="Comment" map-to="def:comment"/>
<style id="floating-point" _name="Floating Point" map-to="def:floating-point"/>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="intrinsic" _name="Intrinsic function" map-to="def:builtin"/>
<style id="boz-literal" _name="BOZ Literal" map-to="def:base-n-integer"/>
<style id="decimal" _name="Decimal" map-to="def:decimal"/>
<style id="type" _name="Data Type" map-to="def:type"/>
</styles>
<default-regex-options case-sensitive="false"/>
<definitions>
<!-- Note: I want comments only beginning with !, not C -->
<context id="line-comment" style-ref="comment" end-at-line-end="true" class="comment" class-disabled="no-spell-check">
<start>!</start>
<include>
<context ref="def:escape"/>
<context ref="def:in-line-comment"/>
</include>
</context>
(...)
He leído esta pregunta [ resaltado de sintaxis gedit personalizado para tontos? ] e intenté hacer que el nuevo archivo fortran_enhanced.lang sea legible con
$ cd /usr/share/gtksourceview-3.0/language-specs
$ sudo chmod 0644 fortran_enhanced.lang
Pero no hizo ninguna diferencia.
Tengo que decir que nunca antes había hecho algo como esto y ni siquiera entiendo la mayor parte del archivo de idioma, por lo que estoy abierto a todas las críticas, ya que me ha guiado puramente la intuición.
¡Gracias por adelantado!
fuente
cd /usr/share/gtksourceview-3.0/language-specs
. ¿Es ese el comando real que ejecutaste? Si es así, solo necesita mover el archivo a/usr/local/share/gtksourceview-3.0/language-specs
.Respuestas:
Creo que descubrí lo que salió mal para ti:
Solución
Es bueno y correcto que haya cambiado el
id
(y_name
) en la<language ...>
etiqueta. Después de todo, es un nuevo esquema de resaltado que creas.Sin embargo, debe cambiar también el otro lugar del archivo donde se usa esta identificación. Más abajo en la definición del lenguaje (omitido en la cita de la pregunta) encontrará esto:
Aparentemente, debe tener un contexto con la misma identificación que su idioma que incluye / hace referencia a todas las definiciones de contexto utilizadas, para que gedit / GtkSourceView lo use cuando se elija un esquema específico.
Como lo encontre
No soy en absoluto un experto en esto. Toda mi calificación es que he visto archivos XML antes;) Así que solo pude hacer conjeturas "educadas".
Lo que me avisó fue una advertencia que se muestra al iniciar gedit desde una ventana de terminal
(Utilicé " frtrn " como id, nombre y extensión de archivo durante las pruebas, debería recibir la misma advertencia con " fortran_enhanced ")
Esto me hizo sospechar lo suficiente como para buscar la identificación original en el resto del archivo. Después de probar la solución anterior, también encontré la siguiente línea para respaldar mi explicación:
Es del tutorial del archivo de definición de idioma en la documentación de GtkSourceView.
fuente