bl.printStackTrace();
Log.log(Log.ERROR,this,bl);
	public boolean indentLine(Buffer buffer, View view,		int lineIndex, boolean force)	{		// Use JEditTextArea's line access methods		JEditTextArea textArea = view.getTextArea();		// Get properties		String openBrackets = (String)getProperty("indentOpenBrackets");		String closeBrackets = (String)getProperty("indentCloseBrackets");		if(openBrackets == null)			openBrackets = "";		if(closeBrackets == null)			closeBrackets = "";		int tabSize = buffer.getTabSize();		boolean noTabs = "yes".equals(buffer.getProperty("noTabs"));		if(lineIndex == 0)			return false;		// Get line text		String line = textArea.getLineText(lineIndex);		int start = textArea.getLineStartOffset(lineIndex);		String prevLine = null;		for(int i = lineIndex - 1; i >= 0; i--)		{			if(textArea.getLineLength(i) != 0)			{				prevLine = textArea.getLineText(i);				break;			}		}		if(prevLine == null)			return false;		/*		 * On the previous line,		 * if(bob) { --> +1		 * if(bob) { } --> 0		 * } else if(bob) { --> +1		 */		boolean prevLineStart = true; // False after initial indent		int prevLineIndent = 0; // Indent width (tab expanded)		int prevLineBrackets = 0; // Additional bracket indent		for(int i = 0; i < prevLine.length(); i++)		{			char c = prevLine.charAt(i);			switch(c)			{			case ' ':				if(prevLineStart)					prevLineIndent++;				break;			case '\t':				if(prevLineStart)				{					prevLineIndent += (tabSize						- (prevLineIndent						% tabSize));				}				break;			default:				prevLineStart = false;				if(closeBrackets.indexOf(c) != -1)					prevLineBrackets = Math.max(						prevLineBrackets-1,0);				else if(openBrackets.indexOf(c) != -1)					prevLineBrackets++;				break;			}		}		/*		 * On the current line,		 * } --> -1		 * } else if(bob) { --> -1		 * if(bob) { } --> 0		 */		boolean lineStart = true; // False after initial indent		int lineIndent = 0; // Indent width (tab expanded)		int lineWidth = 0; // White space count		int lineBrackets = 0; // Additional bracket indent		int closeBracketIndex = -1; // For lining up closing			// and opening brackets		for(int i = 0; i < line.length(); i++)		{			char c = line.charAt(i);			switch(c)			{			case ' ':				if(lineStart)				{					lineIndent++;					lineWidth++;				}				break;			case '\t':				if(lineStart)				{					lineIndent += (tabSize						- (lineIndent						% tabSize));					lineWidth++;				}				break;			default:				lineStart = false;				if(closeBrackets.indexOf(c) != -1)				{					if(lineBrackets == 0)						closeBracketIndex = i;					else						lineBrackets--;				}				else if(openBrackets.indexOf(c) != -1)					lineBrackets++;				break;			}		}		try		{			if(closeBracketIndex != -1)			{				int offset = TextUtilities.findMatchingBracket(					buffer,start + closeBracketIndex);				if(offset != -1)				{					String closeLine = textArea.getLineText(						textArea.getLineOfOffset(offset));					prevLineIndent = MiscUtilities						.getLeadingWhiteSpaceWidth(						closeLine,tabSize);				}				else					return false;			}			else			{				prevLineIndent += (prevLineBrackets * tabSize);			}			// Insert a tab if line already has correct indent			// and force is not set			if(!force && lineIndent >= prevLineIndent)				return false;			// Do it			buffer.remove(start,lineWidth);			buffer.insertString(start,MiscUtilities.createWhiteSpace(				prevLineIndent,(noTabs ? 0 : tabSize)),null);			return true;		}		catch(BadLocationException bl)		{			bl.printStackTrace();		}		return false;	}