The PROPS tag and the
        PROPERTY tags inside it are used to define
        mode-specific properties. Each PROPERTY tag must have
        a NAME attribute set to the property's name, and a
        VALUE attribute with the property's value.
All buffer-local properties listed in the section called “Buffer-Local Properties” may be given values in edit modes.
contextInsensitive - If true, the property
        indicates that a line can always be highlighted without taking care of
        the previous line. If activated, the syntax parsing will be much faster.
        
The following mode properties specify commenting strings:
commentEnd - the comment end string,
                used by the 
                command.
commentStart - the comment start
                string, used by the 
                command.
lineComment - the line comment string,
                used by the 
                command.
When performing auto indent, a number of mode properties determine the resulting indent level:
The line and the one before it are scanned for brackets
                listed in the indentCloseBrackets and
                indentOpenBrackets properties. Opening
                brackets in the previous line increase indent.
If lineUpClosingBracket is set to
                true, then closing brackets on the current
                line will line up with the line containing the matching opening
                bracket. For example, in Java mode
                lineUpClosingBracket is set to
                true, resulting in brackets being indented
                like so:
{
    // Code
    {
        // More code
    }
}If lineUpClosingBracket is set to
                false, the line after a
                closing bracket will be lined up with the line containing the
                matching opening bracket. For example, in Lisp mode
                lineUpClosingBracket is set to
                false, resulting in brackets being indented
                like so:
(foo 'a-parameter
    (crazy-p)
    (bar baz ()))
(print "hello world")If the previous line contains no opening brackets, or if
                the doubleBracketIndent property is set to
                true, the previous line is checked against
                the regular expressions in the indentNextLine
                and indentNextLines properties.
                If the
                previous line matches the former, the indent of the current line
                is increased and the subsequent line is shifted back again. If
                the previous line matches the latter, the indent of the current
                and subsequent lines is increased.
 There are corresponding unindentThisLine and unindentNextLines properties which are checked also, for doing the reverse-indent operation on lines that match certain regular expressions. 
In Java mode, for example, the
                indentNextLine property is set to match
                control structures such as “if”,
                “else”, “while”, and so on.
The doubleBracketIndent property, if
                set to the default of false, results in code
                indented like so:
while(objects.hasNext())
{
    Object next = objects.hasNext();
    if(next instanceof Paintable)
        next.paint(g);
}On the other hand, settings this property to “true” will give the following result:
while(objects.hasNext())
    {
        Object next = objects.hasNext();
        if(next instanceof Paintable)
            next.paint(g);
    }
             electricKeys: characters listed here, when typed
             on a line, cause the current line to be re-indented. Notice that by
             default, pressing "Enter" does not re-indent the current line, only
             the new line. To get this behavior, add the newline character to
             electricKeys in the xml-escaped form 

             
ignoreWhitespace:
             Ignore whitespace lines.
             This property is on (true) by default.
             Python language sets this to
             false because of the special treatment
             of whitespaces. Note this example:
             
def fun1:
    a = 1
    b = 2
def fun2:
             
             Pressing C+i
             ( command) on
             the fun2 line would usually indent this
             line and make it even with the b = 2 line.
             But with switched off ignoreWhitespace setting
             the line will stay the way it was indented manually.
             ignoreWhitespace=false setting prevents
             any forward indentation after a whitespace line.
             
Here is the complete <PROPS> tag for Java
        mode:
<PROPS>
    <PROPERTY NAME="commentStart" VALUE="/*" />
    <PROPERTY NAME="commentEnd" VALUE="*/" />
    <PROPERTY NAME="lineComment" VALUE="//" />
    <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
    <!-- Auto indent -->
    <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
    <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
    <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
    <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
    <PROPERTY NAME="indentNextLine"
    	VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />
    <PROPERTY NAME="unindentThisLine"
    	VALUE="^.*(default:\s*|case.*:.*)$" />
    <PROPERTY NAME="electricKeys" VALUE=":" />
    <!-- set this to 'true' if you want to use GNU coding style -->
    <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
    <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
</PROPS>