Como adicionar uma nova definição de idioma para destacar a sintaxe no Gedit?

4

Eu tentei criar um novo arquivo .lang para que o Gedit reconheça a linguagem de programação Julia . Eu li o tutorial , o documento de referência e na página da wiki Gedit / NewLanguage , e acredito que o arquivo esteja correto. No entanto, ao reiniciar o gedit depois de copiar o novo arquivo julia.lang para /usr/share/gtksourceview-3.0/language-specs/ , o arquivo a .jl é realmente reconhecido e o menu de realce da sintaxe é definido como julia, mas não ocorre realce real.

Pensando que eu poderia ter feito algo errado, tentei usar um arquivo de idioma existente, para um idioma semelhante ( Matlab ), e apenas mudou os metadados do cabeçalho para:

<language id="julia" _name="Julia" version="2.0" _section="Scientific">
  <metadata>
    <property name="mimetypes">text/x-julia;application/x-julia</property>
    <property name="globs">*.jl</property>
    <property name="line-comment-start">#</property>
  </metadata>

Tudo o mais foi mantido exatamente como está e salvei o arquivo como julia.lang . Ainda assim, ao reabrir o gedit, o mesmo problema ocorre. Além disso, se eu selecionar a entrada Matlab no menu de realce de sintaxe, a formatação será feita corretamente (de acordo com as regras do Matlab), mesmo que matlab.lang e julia.lang tenham exatamente as mesmas definições de sintaxe!

O que eu poderia estar fazendo de errado? Esse cara parecia ter o mesmo problema, mas nunca foi revelado nesse tópico como ele resolveu (se ele já fez). Alguma idéia?

Atualização : meu erro não foi, de fato, mudar o id do contexto, como apontado por @carandraug em sua resposta. No entanto, tive outros problemas que observarei aqui, caso sejam de ajuda para alguém:

  1. Reutilizei a definição "shell-like-comment" de def.lang para os comentários de linha única de Julia, mas isso me causou muitos erros. Acontece que quando um contexto de referência é usado, o% O atributoid não pode ser definido. Mudar de <context id="comment" ref="def:shell-like-comment" /> para <context ref="def:shell-like-comment" /> fez com que os erros desaparecessem. Eu acho que o documento de referência (e o tutorial também) deve mencionar esta advertência. Eu editei a página wiki para apontar isso.
  2. Antes de perceber o problema com o contexto dos comentários, comentei sua definição, mas depois comecei a receber um erro "estilo 'def: string' not defined" . Quando descomentei a definição, esse erro desapareceu. Não sei o que causou isso (considerando que, de fato, um <style id="string"> foi definido em def.lang ). Quaisquer esclarecimentos sobre isso são bem-vindos nos comentários: -)

Uma sugestão final para qualquer pessoa que desenvolva novas definições de realce de idioma para o gedit: não se esqueça de executar o gedit na linha de comando e examinar a saída do console!

    
por waldyrious 15.05.2013 / 06:31

1 resposta

2

Não sei por que o arquivo julia.lang original não está funcionando, pois você não está exibindo a fonte, mas aquele com base em matlab.lang não funcionará porque não há contexto dentro de <definitions> com o mesmo id que você mencionou para <language> .

Basicamente, você está dizendo que id desta linguagem é julia , mas não há contexto com que id esteja definido. Portanto, encontre a <context id="matlab" ( linha 149 da atual HEAD ) e altere para julia .

Um arquivo lang é geralmente organizado como um conjunto de contextos individuais para os recursos de linguagem que estão sendo destacados, que são agrupados no final em um bloco principal com o mesmo id da linguagem e referências a outros contextos.

    
por carandraug 15.05.2013 / 07:20