Estou tentando alterar um arquivo de destaque do Gedit. Modifiquei o arquivo /usr/share/gtksourceview-3.0/language-specs/fortran.lang porque quero alterar os casos em que o editor faz uma declaração como comentário. O problema que tenho é que, quando escolho o novo esquema de destaque, nada destaca, ele permanece como texto simples.
O arquivo fortran.lang foi aberto com permissões su e apenas copiei tudo em um novo arquivo do Gedit e depois salvei como fortran_enhanced.lang na mesma pasta. As alterações que fiz no arquivo original são estas:
Arquivo fortran.lang original:
<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>
(...)
Arquivo 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>
(...)
Eu li esta pergunta [ Destaque personalizado da sintaxe do gedit para manequins? ] e tentei tornar o novo arquivo fortran_enhanced.lang legível com
$ cd /usr/share/gtksourceview-3.0/language-specs
$ sudo chmod 0644 fortran_enhanced.lang
mas não fez nenhuma diferença.
Devo dizer que nunca fiz algo assim antes e nem sequer entendo a maior parte do arquivo de idiomas, por isso estou aberto a todas as críticas, pois fui guiado puramente pela intuição.
Agradeço antecipadamente!
fonte
cd /usr/share/gtksourceview-3.0/language-specs
. Esse é o comando que você executou? Se for, você só precisa mover o arquivo para/usr/local/share/gtksourceview-3.0/language-specs
.Respostas:
Acho que descobri o que deu errado para você:
Solução
É bom e correto que você alterou o
id
(e_name
) na<language ...>
tag. Afinal, é um novo esquema de destaque que você cria.No entanto, você também precisará alterar o outro local no arquivo em que esse ID é usado. Mais abaixo na definição de idioma (omitida na citação na pergunta), você encontra o seguinte:
Aparentemente, você precisa ter um contexto com o mesmo ID da sua linguagem, incluindo / fazendo referência a todas as definições de contexto usadas, para que o gedit / GtkSourceView o use quando um esquema específico for escolhido.
Como eu o encontrei
Não sou especialista nisso. Toda a minha qualificação é que eu já vi arquivos XML antes;) Então, eu só podia fazer suposições "educadas".
O que me deu uma dica foi um aviso exibido ao iniciar o gedit a partir de uma janela do terminal
(Eu usei " frtrn " como id, nome e extensão de arquivo durante o teste, você deve receber o mesmo aviso com " fortran_enhanced ")
Isso me deixou desconfiado o suficiente para procurar o ID original no restante do arquivo. Depois de experimentar a solução acima, também encontrei a seguinte linha para apoiar minha explicação:
É do tutorial do arquivo de definição de idioma na documentação do GtkSourceView.
fonte