Common steps
1. Make directories for language definition and for new MIME:
$ mkdir -p ~/.local/share/gtksourceview-2.0/language-specs/ $ mkdir -p ~/.local/share/mime/packages/
2. Create new MIME definition in ~/.local/share/mime/packages/
3. Create .lang file in ~/.local/share/gtksourceview-2.0/language-specs/
4. Update MIME database
$ update-mime-database ~/.local/share/mime
New language for MBox
STEP - 2: New MIME
Actually it should be already in /usr/share/mime/application/mbox.xml. But one would probably override it:
$ cat > ~/.local/share/mime/packages/mbox.xml
<!--
Author: Ruslan Osmanov
Date: Tue Apr 19 05:12:58 UTC 2011
Version: 1.0
-->
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/mbox">
<comment>MBox Source</comment>
<magic priority="50">
<match type="string" offset="0" value=">"/>
</magic>
<glob pattern="*.mbox"/>
</mime-type>
</mime-info>
^D
^D stands for Ctrl + D shortcut.
STEP - 3: New Language Definition
The GNOME Language Definition Reference 2.0[1] and Language Definition v2.0 Tutorial [2] are good start points.
Syntax highlighting styles could be found in /usr/share/gtksourceview-2.0/styles/.
This info is quite enought to implement a new language:
$ cat > ~/.local/share/gtksourceview-2.0/language-specs/mbox.lang
<?xml version="1.0" encoding="UTF-8"?>
<!--
Author: Ruslan Osmanov
Date: Mon Apr 18 17:08:52 UTC 2011
Version: 1.0
MBox language spec
-->
<language id="mbox" _name="MBox" version="2.0" _section="Email">
<metadata>
<property name="mimetypes">text/x-mbox;application/mbox</property>
<property name="globs">*.mbox</property>
<property name="line-comment-start">></property>
</metadata>
<styles>
<style id="keyword" _name="Keyword" map-to="def:keyword"/>
<style id="underlined" _name="Underlined" map-to="def:underlined"/>
<style id="comment" _name="Comment" map-to="def:comment"/>
<style id="string" _name="A string" map-to="def:string"/>
</styles>
<definitions>
<context id="mbox">
<include>
<context id="keyword" style-ref="keyword">
<prefix>^</prefix>
<suffix>( |\:)</suffix>
<keyword>(From|To|Subject)</keyword>
<!-- Russian -->
<keyword>(От|Кому|Тема)</keyword>
</context>
<context id="link" style-ref="underlined">
<keyword>\b(ftp|http|https)\:\/\/.*\b</keyword>
<keyword>mailto\:.+\@[a-z]+</keyword>
</context>
<context id="comment" style-ref="comment">
<start>^></start>
<end>$</end>
<include>
<context ref="link"/>
</include>
</context>
<context id="comment-multiline" style-ref="comment">
<start>^--</start>
<include>
<context ref="def:in-comment"/>
</include>
</context>
<context id="string" end-at-line-end="true" style-ref="string">
<start>"</start>
<end>"</end>
</context>
</include>
</context>
</definitions>
</language>
<!--vim: set ft=xml:-->
^D
Note, ^D stands for Ctrl + D shortcut.STEP - 4. Update MIME database
$ update-mime-database ~/.local/share/mime
Voila! You now have new MBox language in View - Highlight Mode - Email section.
Cool! Thanks a lot!
ReplyDeleteGood explanations. I did all that but unfortunately the new language I defined is not working: the whole file is seen as text when I choose my new language. I checked everything, don't know where the mistake is.
ReplyDeleteI am not the only one to have this problem, but this does not seem to be solved on forums.
I would be glad if you had any idea !
Probably, you're using new version of Gedit with libgtksourceview-3.0. If so, just copy ~/.local/share/gtksourceview-2.0 to ~/.local/share/gtksourceview-3.0
Deleteand update the mime database again.