Custom gedit Sintaxe Realce para Dummies?

12

Eu quero criar (na verdade) um realce de sintaxe personalizado para o gedit.

Haveria apenas alguns itens diferentes:

Uma linha que começa com duas guias. ----- Uma cor. Uma linha que começa com 3 guias. ----- Outra cor. Uma linha que começa com 4 guias. ----- Outra cor. e uma linha que começa com INT. ou EXT. ----- Outra cor.

Isto é para escrever um roteiro.

Eu olhei para a página wiki de definição de idioma para o gedit, mas está muito acima da minha cabeça.

Existe uma maneira simples de fazer isso?

    
por YAS 03.11.2011 / 01:33

1 resposta

14

O seguinte foi derivado do manual de referência do GtkSourceView, Tutorial do Language Definition v2.0 e Referência .

Crie o arquivo /usr/share/gtksourceview-2.0/language-specs/screenplay.lang (como root), com o seguinte conteúdo:

<?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>

Certifique-se de que o arquivo é legível por meio da execução

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

Reinicie o gedit. Agora, qualquer arquivo chamado *.script que você abrir no gedit deverá mostrar o tipo "Screenplay" na barra de status na parte inferior. As linhas recortadas com 2, 3 ou 4 guias devem ser coloridas em azul, magenta e ciano, respectivamente, e as linhas começam em INT. ou EXT. será vermelho e negrito.

Você pode ajustar isso de algumas maneiras:

  • O sufixo do nome do arquivo .script é definido na linha 5, na propriedade "globs". Você pode alterar isso da maneira óbvia e incluir vários valores, se desejar, separados por ponto e vírgula ( ; ).

  • As cores que você obtém para o recuado e o INT. e EXT. linhas dependem do esquema de cores específico que você selecionou para o gedit. Elas são as cores dos estilos de comentário, constante, identificador e instrução (é o que o map-to="def:comment" etc. faz). Para obter resultados diferentes, você pode alterar o esquema de cores do gedit (Editar > Preferências > Fontes e cores) ou reorganizar os valores map-to nas tags <style> . Se você quer mais controle, você pode criar seu próprio esquema de cores da seguinte forma:

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

    Edite o screenplay.xml (como root). Substitua as três primeiras linhas sem comentário por:

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

    Em seguida, ajuste as cores (e talvez outros estilos também, por exemplo, bold="true" ) dos estilos def: comment, def: constant, def: identifier e def: statement. Reinicie o gedit novamente e altere o esquema de cores do gedit para o Screenplay para ver suas novas cores. Note que essa é uma mudança global; você pode querer voltar ao seu esquema de cores normal para editar outros arquivos.

Observe que sempre que você alterar os arquivos screenplay.lang ou screenplay.xml, será necessário reiniciar o gedit para ver os resultados.

    
por 07.11.2011 / 08:33