Writing language definition files: Difference between revisions
No edit summary |
|||
Line 49: | Line 49: | ||
'''''A special note:''' All language files share one list of option names and their description. So if two or more options have the same name, they will get the same description in Bluefish. If they have a different description inside the file, it is not defined which description is used!!!'' | '''''A special note:''' All language files share one list of option names and their description. So if two or more options have the same name, they will get the same description in Bluefish. If they have a different description inside the file, it is not defined which description is used!!!'' | ||
There are a few special (hardcoded) option names: | |||
In this example a block named 'php block' is made optionally foldable (or not). | |||
The '_foldable' suffix is hardcoded in bluefish. | |||
<pre><option name="php block_foldable" default="1" description="Allow the PHP block to fold"/></pre> | |||
Whether or not to load the reference data for this language (saves memory) | |||
<pre><option name="load_reference" default="1"/></pre> | |||
Whether or not to load the auto completion data for this language (saves memory) | |||
<pre><option name="load_completion" default="1" /></pre> | |||
Whether or not to close <tag> in the auto-completion | |||
<option name="autocomplete_tags" default="1" /> | |||
Whether or not to show this language by default in the menu | |||
<pre><option name="show_in_menu" default="0"/></pre> |
Revision as of 21:09, 11 March 2014
Bluefish language definition files
All syntax highlighting and autocompletion is defined in bluefish language definition files, saved in .bflang2 files. In the source code they can be found in data/bflang/
On Linux they are installed in /usr/share/bluefish/bflang/
If you store a bflang2 file in your bluefish settings directory ~/.bluefish/ it has higher priority than the system wide installed files. So if you are going to change a bflang2 file, just copy it into ~/.bluefish/
The format of the file
The file format is XML.
It starts with a root tag <bflang>:
<bflang name="Shell" version="2.0" > </bflang>
Inside the root tag there are three sections
The header section
The header section is always loaded for each bflang2 file. The rest of the file is loaded "on demand", so only if it is needed.
<header> <mime type="application/x-shellscript"/> <option name="show_in_menu" default="1"/> <highlight name="value" style="value" /> </header>
The mime tag in the header
The mime tag specifies for which mime types this definition file is used. There can be multiple mime types specified. Sometimes a file doesn't have a specific mime type, or the mime type is not defined on many systems. In that case the mime type is often something like text/plain Bluefish supports a combination of mime type and extension. To detect a file type that ends on .fake you add
<mime type="application/x-fake"/> <mime type="text/plain?fake"/>
The option tag in the header
The option tag defines an option that is used further on in the language file
<option name="allphpfunctions" default="1" description="All php functions" />
A special note: All language files share one list of option names and their description. So if two or more options have the same name, they will get the same description in Bluefish. If they have a different description inside the file, it is not defined which description is used!!!
There are a few special (hardcoded) option names:
In this example a block named 'php block' is made optionally foldable (or not). The '_foldable' suffix is hardcoded in bluefish.
<option name="php block_foldable" default="1" description="Allow the PHP block to fold"/>
Whether or not to load the reference data for this language (saves memory)
<option name="load_reference" default="1"/>
Whether or not to load the auto completion data for this language (saves memory)
<option name="load_completion" default="1" />
Whether or not to close <tag> in the auto-completion <option name="autocomplete_tags" default="1" />
Whether or not to show this language by default in the menu
<option name="show_in_menu" default="0"/>