Gedit
向 Gedit 添加新語言
我需要在 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.types
as
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">