if(!multi && caret != s.start) removeFromSelection(s); moveCaretPosition(s.start); return;
if(multi) { if(caret != s.start) { moveCaretPosition(s.start); return; } } else { setCaretPosition(s.start); return; }
	public void goToPrevCharacter(boolean select)	{		if(!select && selection.size() != 0)		{			Selection s = getSelectionAtOffset(caret);			if(s != null)			{				if(!multi && caret != s.start)					removeFromSelection(s);				moveCaretPosition(s.start);				return;			}		}		int newCaret;		if(caret == getLineStartOffset(caretLine))		{			int line = buffer.getPrevVisibleLine(caretLine);			if(line == -1)			{				getToolkit().beep();				return;			}			newCaret = getLineEndOffset(line) - 1;		}		else			newCaret = caret - 1;		if(select)			extendSelection(caret,newCaret);		else if(!multi)			selectNone();		moveCaretPosition(newCaret);	}