Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAri Kast2020-08-12 03:01:13 +0000
committerAri Kast2020-08-12 03:44:53 +0000
commitfd04502442ae5db261da01b582741dc8006bb8d7 (patch)
treeb532ba13293426eb8d75d2a38fde4411059dd579
parent0b6cda811af728ef204048b302c135c89f061adf (diff)
downloadeclipse.platform.text-fd04502442ae5db261da01b582741dc8006bb8d7.tar.gz
eclipse.platform.text-fd04502442ae5db261da01b582741dc8006bb8d7.tar.xz
eclipse.platform.text-fd04502442ae5db261da01b582741dc8006bb8d7.zip
Bug 72773: store and navigate multiple edit history locationsY20200812-1200I20200812-1800I20200812-0710
update key mapping Change-Id: Icbe3e8a2c37b71028afc401b297b9c6d244e5129
-rw-r--r--org.eclipse.ui.workbench.texteditor/plugin.xml9
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/HistoryTracker.java4
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/TextEditorPlugin.java26
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java3
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLastEditPositionAction.java6
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoNextEditPositionAction.java6
6 files changed, 34 insertions, 20 deletions
diff --git a/org.eclipse.ui.workbench.texteditor/plugin.xml b/org.eclipse.ui.workbench.texteditor/plugin.xml
index 093dffa0316..6f1263c103b 100644
--- a/org.eclipse.ui.workbench.texteditor/plugin.xml
+++ b/org.eclipse.ui.workbench.texteditor/plugin.xml
@@ -597,12 +597,17 @@
commandId="org.eclipse.ui.edit.text.gotoLastEditPosition"
contextId="org.eclipse.ui.contexts.window"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
- sequence="CTRL+Q"/> <!-- Command+Q is quit on carbon, so don't overwrite it -->
+ sequence="CTRL+Q"/>
+ <key
+ commandId="org.eclipse.ui.edit.text.gotoLastEditPosition"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M3+CTRL+ARROW_LEFT"/>
<key
commandId="org.eclipse.ui.edit.text.gotoNextEditPosition"
contextId="org.eclipse.ui.contexts.window"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
- sequence="M3+CTRL+Q"/>
+ sequence="M3+CTRL+ARROW_RIGHT"/>
<key
commandId="org.eclipse.ui.edit.text.smartEnter"
contextId="org.eclipse.ui.textEditorScope"
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/HistoryTracker.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/HistoryTracker.java
index a96686c6371..422a2a69a63 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/HistoryTracker.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/HistoryTracker.java
@@ -25,8 +25,8 @@ import java.lang.reflect.Array;
* location in linear mode, if history size is N, then calling
* goBackward N times brings you to the beginning, after which
* additional calls to goBackward will have no effect until either
- * goForward is called or a new entry is added Both linear and ring mode
- * overwrite history as needed when buffer is full
+ * goForward is called or a new entry is added. Both linear and ring
+ * mode overwrite history as needed when buffer is full
* @param <T> the type of the object instances being tracked in history
*
* @since 3.15
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/TextEditorPlugin.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/TextEditorPlugin.java
index b999befd10d..b2ff94f4a69 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/TextEditorPlugin.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/TextEditorPlugin.java
@@ -54,14 +54,15 @@ public final class TextEditorPlugin extends AbstractUIPlugin implements IRegistr
private static TextEditorPlugin fgPlugin;
/**
- * tracks whether cursor has moved since fEditPositionHistory was used to
- * return to prior location. If cursor has moved, then goto last edit
- * location simply returns to last edit location. But if cursor has not
- * moved, that means the command was invoked twice in a row without
- * intervening other actions; in that case we start traversing backward thru
- * history to prior edit locations
+ * tracks whether cursor has moved since fEditPositionHistory was used to return
+ * to prior or next location. If cursor has moved, then goto last edit location
+ * simply returns to last edit location. But if cursor has not moved, that means
+ * the command was invoked twice in a row without intervening other actions; in
+ * that case we are in a traversal state of BACKWARD (or FORWARD), so we start
+ * traversing backward (or forward) through history to prior (or next) edit
+ * locations.
*/
- boolean movedSinceLastEditRecall = true;
+ TraversalDirection fEditHistoryTraversalDirection = TraversalDirection.NONE;
// an ordered history of prior edit positions
private HistoryTracker<EditPosition> fEditPositionHistory = new HistoryTracker<>(
@@ -123,12 +124,12 @@ public final class TextEditorPlugin extends AbstractUIPlugin implements IRegistr
*/
public static final String REFERENCE_PROVIDER_EXTENSION_POINT= "quickDiffReferenceProvider"; //$NON-NLS-1$
- public boolean isMovedSinceLastEditRecall() {
- return movedSinceLastEditRecall;
+ public TraversalDirection getEditHistoryTraversalDirection() {
+ return fEditHistoryTraversalDirection;
}
- public void setMovedSinceLastEditRecall(boolean movedSinceLastEditRecall) {
- this.movedSinceLastEditRecall = movedSinceLastEditRecall;
+ public void setEditHistoryTraversalDirection(TraversalDirection direction) {
+ this.fEditHistoryTraversalDirection = direction;
}
public HistoryTracker<EditPosition> getEditPositionHistory() {
@@ -280,4 +281,7 @@ public final class TextEditorPlugin extends AbstractUIPlugin implements IRegistr
return fCodeMiningProviderRegistry;
}
+ public static enum TraversalDirection {
+ NONE, BACKWARD, FORWARD;
+ }
}
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 9835d97a60c..840af786ac9 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
@@ -6619,7 +6619,8 @@ public abstract class AbstractTextEditor extends EditorPart implements ITextEdit
* @since 3.15
*/
private void handleCursorPositionChangedWrapper() {
- TextEditorPlugin.getDefault().setMovedSinceLastEditRecall(true);
+ TextEditorPlugin.getDefault()
+ .setEditHistoryTraversalDirection(TextEditorPlugin.TraversalDirection.NONE);
handleCursorPositionChanged();
}
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLastEditPositionAction.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLastEditPositionAction.java
index effdbea938b..7fe3cc232ab 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLastEditPositionAction.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLastEditPositionAction.java
@@ -69,7 +69,8 @@ public class GotoLastEditPositionAction extends Action implements IWorkbenchWind
@Override
public void run() {
- if (!TextEditorPlugin.getDefault().isMovedSinceLastEditRecall()) {
+ if (TextEditorPlugin.TraversalDirection.BACKWARD == TextEditorPlugin.getDefault()
+ .getEditHistoryTraversalDirection()) {
TextEditorPlugin.getDefault().backtrackEditPosition();
}
EditPosition editPosition = TextEditorPlugin.getDefault().getLastEditPosition();
@@ -126,7 +127,8 @@ public class GotoLastEditPositionAction extends Action implements IWorkbenchWind
provider.setSelection(new TextSelection(pos.offset, pos.length));
}
} finally {
- TextEditorPlugin.getDefault().setMovedSinceLastEditRecall(false);
+ TextEditorPlugin.getDefault()
+ .setEditHistoryTraversalDirection(TextEditorPlugin.TraversalDirection.BACKWARD);
}
}
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoNextEditPositionAction.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoNextEditPositionAction.java
index 587a0644a3b..23ff43f663c 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoNextEditPositionAction.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoNextEditPositionAction.java
@@ -72,7 +72,8 @@ public class GotoNextEditPositionAction extends Action implements IWorkbenchWind
@Override
public void run() {
- if (!TextEditorPlugin.getDefault().isMovedSinceLastEditRecall()) {
+ if (TextEditorPlugin.TraversalDirection.FORWARD == TextEditorPlugin.getDefault()
+ .getEditHistoryTraversalDirection()) {
TextEditorPlugin.getDefault().advanceEditPosition();
}
EditPosition editPosition = TextEditorPlugin.getDefault().getNextEditPosition();
@@ -124,7 +125,8 @@ public class GotoNextEditPositionAction extends Action implements IWorkbenchWind
provider.setSelection(new TextSelection(pos.offset, pos.length));
}
} finally {
- TextEditorPlugin.getDefault().setMovedSinceLastEditRecall(false);
+ TextEditorPlugin.getDefault()
+ .setEditHistoryTraversalDirection(TextEditorPlugin.TraversalDirection.FORWARD);
}
}

Back to the top