Adicionando novo idioma ao Gedit

5

Eu preciso adicionar um novo idioma no Gedit. O problema é que ele está incluído no menu de idiomas do Gedit agora, mas sua sintaxe não está destacada e o Gedit não é capaz de identificar a linguagem apenas a partir do sufixo do arquivo.

Eu criei o arquivo .lang e um arquivo XML descrevendo MIME-TYPE.

LANG file - /usr/share/gtksourceview-3.0/language-specs/test.lang
MIME-TYPE file - /usr/share/mime/packages/test.xml

Depois de criá-los, atualizei o banco de dados mime.

sudo update-mime-database /usr/share/mime

Próximas tentativas

1) Eu tentei até mesmo copiar o arquivo test.xml para a pasta /usr/share/mime/applications em vez de /usr/share/mime/packages , mas não teve efeito.

2) Eu tentei colocar o tipo MIME no /etc/mime.types como

text/x-test test

e também não teve efeito.

test.lang

<?xml version="1.0" encoding="UTF-8"?>
<language id="test" _name="Test" version="1.0" _section="Source">
    <metadata>
        <property name="mimetypes">text/x-test</property>
        <property name="globs">*.test</property>
        <property name="line-comment-start">//</property>
        <property name="block-comment-start">/*</property>
        <property name="block-comment-end">*/</property>
    </metadata>

    <styles>
       <style id="comment" _name="Comment" map-to="def:comment"/>
       <style id="keyword" _name="Keyword" map-to="def:keyword"/>
    </styles>

    <definitions>
        <context id="if0-comment" style-ref="comment">
          <start>\%{preproc-start}if\b\s*0\b</start>
          <end>\%{preproc-start}(endif|else|elif)\b</end>
          <include>
            <context id="if-in-if0">
              <start>\%{preproc-start}if(n?def)?\b</start>
              <end>\%{preproc-start}endif\b</end>
              <include>
                <context ref="if-in-if0"/>
                <context ref="def:in-comment"/>
              </include>
            </context>
            <context ref="def:in-comment"/>
          </include>
        </context>

        <context id="keywords" style-ref="keyword">
            <keyword>hello</keyword>
            <keyword>hi</keyword>
        </context>

        <!--Main context-->
        <context id="test">
            <include>
                <context ref="if0-comment"/>
                <context ref="keywords"/>
            </include>
        </context>

    </definitions>
</language>

test.xml

<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info" >
  <mime-type type="text/x-test">
    <sub-class-of type="text/plain"/>
    <comment xml:lang="en">TEST language document</comment>
    <comment xml:lang="cs">Dokument v jazyce TEST</comment>
    <glob pattern="*.test"/>
  </mime-type>
</mime-info>
    
por Eenoku 02.07.2015 / 17:30

1 resposta

3

Finalmente eu descobri. De acordo com o atributo referência de idioma GTK version na tag <language> , deve ser 2.0 . E está realmente funcionando.

Então, a tag <language> adequada é esta:

<language id="test" _name="Test" version="2.0" _section="Source">
    
por 02.07.2015 / 22:38

Tags