Here is an update to a previous post regarding how to get gedit to recognise Smarty template *.tpl files. I’ve found that gedit prefers to use the mime type to decide what type of file it is and therefore what syntax highlighting to apply.
After a little investigation I found that most of my .tpl files were being identified as text/plain in Nautilus (found by right-clicking on the file and selecting properties, on the basic tab the type field will tell you the mime type nautilus is seeing it as)
My new solution to this problem is to convince nautilus (and gedit) that the *.tpl files are in fact HTML files and therefore syntax highlight them in the same way, and here’s how to do it:
- Make a backup of your freedesktop.org.xml file with the following commands:
cd /usr/share/mime/packages sudo cp freedesktop.org.xml freedesktop.org.xml.backup
- Edit the freedesktop.org.xml file as a super user:
sudo gedit /usr/share/mime/packages/freedesktop.org.xml
- Search the file for “*.php” (without the quotes). You should find a section with:
<glob pattern="*.php"/> <glob pattern="*.php3"/> <glob pattern="*.php4"/>
- Add a new glob entry for tpl files by adding the line:
<glob pattern="*.tpl"/>
- Save and close the file then run the following command which should be fairly self-explanatory:
sudo update-mime-database /usr/share/mime
- Nautilus and gedit should now recognise .tpl files as html files and syntax highlight as such
The only drawback with this option (and I consider it a rather minor inconvenience) is that double clicking your tpl files will try and open them in Firefox by default now, you can change this to open in gedit by default but then all your .html and .htm files will open in gedit by default too.
You choose which you prefer, I personally have no problem leaving them to open in Firefox by default since I rarely double click tpl files in nautilus, I usually use the file browser plugin in gedit.
Thanks to a suggestion by Sudhanshu I’ve edited the post to add the tpl entry to the php section of the freedesktop.org.xml file instead of the html section. The benefit of this is that you can now double click tpl files and have them open in the same application as php files (usually gedit) while html files will still open in your browser.
As always comments are appreciated on whether this was helpful or if you’ve found a better way.
Pingback: c3b» » Smarty template syntax highlighting with gedit
Your new solution works!
Now Gedit is highlighting .tpl files automatically
Thanks a lot!
Glad I could help, thanks for the comment
Great. Thanks a lot. I was looking for this long time ago.
This works, but to avoid in Firefox, I put the extension under the php section.
@Sudhanshu That’s a good idea, I’ve now done this myself as it seems like a more elegant solution. I should’ve thought of it myself. I’m also going to update the post to make the suggestion
Thanks
Thanks for the great how-to. It was driving me crazy to have to select the highlighting syntax manually whenever I was working with tpl files.
Pingback: Smarty template file with HTML Syntax Highlight in Gedit | Just For Fun With Us
Interesting. That didnt seem to work for me in Ubuntu 10.4. =/
Pingback: 3f blog » Reflexiones y descubrimientos relacionados con mime-type, gedit y smarty
You can find a Gedit syntax file for Smarty with a small install script on this Github repository, check it out
!
https://github.com/dandelionmood/Smarty-syntax-coloration-for-GEdit
Thanks Pierre, I just installed your version. Nice!
iometrine, i know it’s a little bit late, but thanks. I use smarty and you save me
Hi,
This solution is not working for ubuntu 10.04 LTS and also script provided at comment is also not working.
Hi Tejas,
I’m afraid I can’t help. This post is now 3.5 years old and I haven’t used Ubuntu since 8.10 after which I switched to OSX and now use Eclipse.
If you do happen to find a solution I would be more than happy to update the contents of this post and/or link to another site with a more up to date fix. As it is I don’t have the time right now to find a fix myself.
Sorry I can’t be of any more help.