Gedit

向 Gedit 添加新語言

  • July 2, 2015

我需要在 Gedit 中添加一種新語言。問題是,它現在包含在語言的 Gedit 菜單中,但它的語法沒有突出顯示,Gedit 無法僅從文件後綴辨識語言。

我已經創建了 .lang 文件和描述 MIME-TYPE 的 XML 文件。

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

創建它們後,我更新了 mime 數據庫。

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

接下來的嘗試

1)我什至嘗試將文件複製test.xml/usr/share/mime/applications文件夾而不是/usr/share/mime/packages,但它沒有效果。

2)我試圖將 mime 類型放入/etc/mime.typesas

text/x-test test

它也沒有效果。


測試語言

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

測試.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>

最後我想通了。根據標籤中的GTK lang 引用 version屬性<language>應該是2.0. 它真的很有效。

所以,正確的<language>標籤是這樣的:

<language id="test" _name="Test" version="2.0" _section="Source">

引用自:https://unix.stackexchange.com/questions/213566