Bug 577325 - Home key at start of line move cursor to start of document Change-Id: I91152d94d540eeb00ec400618af18a623d67a748 Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.text/+/187903 Tested-by: Platform Bot <platform-bot@eclipse.org> Reviewed-by: Sebastian Ratz <sebastian.ratz@sap.com> Reviewed-by: Mickael Istria <mistria@redhat.com>
diff --git a/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/TextNavigationTest.java b/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/TextNavigationTest.java index b9e3b31..9449786 100644 --- a/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/TextNavigationTest.java +++ b/org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/TextNavigationTest.java
@@ -31,6 +31,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.ITextSelection; @@ -39,6 +40,7 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; +import org.eclipse.ui.internal.editors.text.EditorsPlugin; import org.eclipse.ui.tests.harness.util.DisplayHelper; import org.eclipse.ui.texteditor.AbstractTextEditor; @@ -69,6 +71,24 @@ } @Test + public void testHome() { + IPreferenceStore preferenceStore = EditorsPlugin.getDefault().getPreferenceStore(); + boolean previousPrefValue = preferenceStore.getBoolean(AbstractTextEditor.PREFERENCE_NAVIGATION_SMART_HOME_END); + preferenceStore.setValue(AbstractTextEditor.PREFERENCE_NAVIGATION_SMART_HOME_END, false); + IDocument doc = editor.getDocumentProvider().getDocument(editor.getEditorInput()); + doc.set("line1\nline2"); + editor.selectAndReveal(doc.getLength(), 0); + editor.getAction(ITextEditorActionDefinitionIds.LINE_START).run(); + try { + assertEquals(6, ((ITextSelection) editor.getSelectionProvider().getSelection()).getOffset()); + editor.getAction(ITextEditorActionDefinitionIds.LINE_START).run(); + assertEquals(6, ((ITextSelection) editor.getSelectionProvider().getSelection()).getOffset()); + } finally { + preferenceStore.setValue(AbstractTextEditor.PREFERENCE_NAVIGATION_SMART_HOME_END, previousPrefValue); + } + } + + @Test public void testShiftHome() { editor.selectAndReveal(5, 0); IAction action= editor.getAction(ITextEditorActionDefinitionIds.SELECT_LINE_START);
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java index b8a57d3..29fc5c4 100644 --- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java +++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java
@@ -1362,7 +1362,7 @@ // Compute the line start offset int index = getLineStartPosition(document, line, lineLength, caretOffsetInDocument); newCaretOffset = (caretOffset - lineOffset == index) ? lineOffset : lineOffset + index; - } else if (caretOffset > lineOffset) { + } else if (caretOffset >= lineOffset) { // to beginning of line newCaretOffset = lineOffset; }