Short documentation on CodeCommander language definition files.

A line may be commented out by placing a '#' in the first column
CodeCommander uses the GNU regex library.
Note: Each section in a language definition is a pair of XML style tags.

[Section 1: General Settings]

<settings>                     // beginning tag
language=C/C++                 // Description of the language
compiler=gcc -g %2 -o %3 2>&1  // the command to use for compiling (by default)
debugger=xterm -e gdb %3       // command for debugging
execution=./%3                 // command for execution
auto_indent=1                  // is auto indenting on?
use_spaces=0                   // should spaces be used instead of tabs?
tab_stop=4                     // how wide (in spaces) are tabs?
</settings>                    // end tag

Constants for compiler, debugger and execution:
%1 is the path to the file.
%2 is the filename with extension
%3 is the filename without the extension

[Section 2: Supported Extensions]

<extensions>
 <item name="c source file" ext="c">
 <item name="include file" ext="h">
 <item name="c++ source file" ext="cpp">
</extensions>

[Section 3: Highlighting between 2 regex's]

<syntax>
 <item name="string" start=""" end=""" color="dark_green"
 <item name="comment" start="//" end="\n" color="dark_green"
 <item name="c_comment" start="/\*" end="\*/" color="dark_green"
 <item name="brackets" start="\[" end="\]" color="dark_blue"
</syntax>

Suported Colors:
black, white, red, green, blue, light_red, light_green, light_blue,
dark_red, dark_green, dark_blue, yellow, and orange.

[Section 4: Highlighting words and characters]

<pattern>
 <item name="gtk" words="\b\(GtkWidget\|GtkSignalFunc\)\b" color="blue">
 <item name="macros" words="\b[A-Z_][A-Z_][A-Z_]*\b" color="red">
 <item name="numbers" words="\b[0-9]*\b" color="dark_blue">
 <item name="operators" words="\(\*\|->\|::\|<<\|>>\|>\|<\|=\|==\|!=\|<=\|>=\|++\|--\|%\|+\|-\|||\|&&\|!\|+=\|-=\|\*=\|/=\|%=\)" color="orange">
</pattern>

The same color selection applys to pattern highlighting as well.

[Section 5: Highlighting words and characters between 2 specified regex's]

<embedded>
 <item name="functions" start="\(void\|int\|bool\|double\)" end="(" words="\([a-zA-Z0-9_\)" color="green">
</embedded>


[Section 6: Dynamic "Insert" menu entries]

<menus>
 <menu title="C">
  <item name="Comment (C)" string="/*\n\n*/" value="3">
  <separator>
  <item name="Comment (C++)" string="//" value="0"> 
 </menu>
</menus>

"title" is the name that will show up as the menu entry
"name" is the text that will show up as the menu entry.
"string" is the text to insert. \n and \t work.
"value" is the number if characters to backup after insertion.

Menus can be nested, and are pretty much unlimited.
Indentation is arbitrary, but makes it look nice.