Realce personalizado de sintaxe do gedit para manequins?

15

Quero criar (na verdade) uma sintaxe personalizada, destacando o gedit.

Existem apenas alguns itens diferentes:

Uma linha que começa com 2 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 linguagem para o gedit, mas está muito além da minha cabeça.

Existe uma maneira simples de fazer isso?

YAS
fonte

Respostas:

16

O seguinte foi derivado do manual de referência GtkSourceView, Tutorial e referência de definição de linguagem v2.0 .

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>

Verifique se o arquivo é legível pelo mundo executando

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

Reinicie o gedit. Agora, qualquer arquivo nomeado *.scriptque você abrir no gedit deve mostrar o tipo "Roteiro" na barra de status na parte inferior. As linhas recuadas com 2, 3 ou 4 guias devem ser coloridas em azul, magenta e ciano, respectivamente, e as linhas começando com INT. ou EXT. será vermelho e em negrito.

Você pode ajustar isso de algumas maneiras:

  • O .scriptsufixo do nome do arquivo está 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 recuo e INT. e EXT. as linhas dependem do esquema de cores específico que você selecionou para o gedit. São as cores dos estilos de comentário, constante, identificador e declaração (é o que map-to="def:comment"etc.). Para obter resultados diferentes, você pode alterar o esquema de cores do gedit (Editar> Preferências> Fontes e cores) ou reorganizar os map-tovalores nas <style>tags. Se você deseja mais controle, pode criar seu próprio esquema de cores da seguinte maneira:

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

    Edite 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 Screenplay para ver suas novas cores. Note que essa é uma mudança global; convém voltar ao 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.

Andrew Schulman
fonte
Isso foi feito! IMPRESSIONANTE!
YAS
Obrigado, eu tive um caso de uso semelhante, destacando linhas relacionadas, mas fisicamente diferentes, da mesma cor e isso ajudou muito.
Eloff