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:--> ^DNote, ^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.