Bug 48852 Found the followng exception in the log
I20031216 java.lang.IllegalArgumentException: at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:56) at org.eclipse.core.internal.runtime.Assert.isLegal(Assert.java:41) at org.eclipse.core.runtime.Status.setMessage(Status.java:156) at org.eclipse.core.runtime.Status.<init>(Status.java:75) at org.eclipse.ui.editors.text.TextFileDocumentProvider.executeOperation (TextFileDocumentProvider.java:396) at org.eclipse.ui.editors.text.TextFileDocumentProvider.validateState (TextFileDocumentProvider.java:812) at org.eclipse.ui.texteditor.AbstractTextEditor.validateState (AbstractTextEditor.java:3035) at org.eclipse.ui.texteditor.AbstractTextEditor$16.run (AbstractTextEditor.java:3080) at org.eclipse.swt.custom.BusyIndicator.showWhile (BusyIndicator.java:84) at org.eclipse.ui.texteditor.AbstractTextEditor.validateEditorInputState (AbstractTextEditor.java:3075) at org.eclipse.ui.texteditor.AbstractTextEditor$ElementStateListener$Validator.ver ifyText(AbstractTextEditor.java:212) at org.eclipse.swt.widgets.TypedListener.handleEvent (TypedListener.java:193) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:871) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:856) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:664) at org.eclipse.swt.custom.StyledText.modifyContent (StyledText.java:5947) at org.eclipse.swt.custom.StyledText.sendKeyEvent(StyledText.java:6931) at org.eclipse.swt.custom.StyledText.doContent(StyledText.java:2554) at org.eclipse.swt.custom.StyledText.handleKey(StyledText.java:5300) at org.eclipse.swt.custom.StyledText.handleKeyDown (StyledText.java:5323) at org.eclipse.swt.custom.StyledText$8.handleEvent (StyledText.java:5070) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:871) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:856) at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:1716) at org.eclipse.swt.widgets.Control.sendKeyEvent(Control.java:1712) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3036) at org.eclipse.swt.widgets.Control.windowProc(Control.java:2939) at org.eclipse.swt.widgets.Display.windowProc(Display.java:2836) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1369) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1990) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1506) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1482) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench (Workbench.java:246) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:139) at org.eclipse.ui.internal.ide.IDEApplication.run (IDEApplication.java:47) at org.eclipse.core.internal.runtime.PlatformActivator$1.run (PlatformActivator.java:233) at org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:84) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:280) at org.eclipse.core.launcher.Main.run(Main.java:741) at org.eclipse.core.launcher.Main.main(Main.java:582)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/actions/IndentAction.java
/**
	 * Returns if the current selection is valid, i.e. whether it is empty and the caret in the 
	 * whitespace at the start of a line, or covers multiple lines.
	 * 
	 * @return <code>true</code> if the selection is valid for an indent operation
	 */
	private boolean isValidSelection() {
		ITextSelection selection= getSelection();
		if (selection.isEmpty())
			return false;
		
		int offset= selection.getOffset();
		int length= selection.getLength();
		
		IDocument document= getDocument();
		if (document == null)
			return false;
		
		try {
			IRegion firstLine= document.getLineInformationOfOffset(offset);
			int lineOffset= firstLine.getOffset();
			
			
			
			if (length == 0)
				return document.get(lineOffset, offset - lineOffset).trim().length() == 0;
			else
				return false;