diff --git a/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/RemappingTests.java b/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/RemappingTests.java index 90c446b56..ee2d628ea 100644 --- a/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/RemappingTests.java +++ b/net.sourceforge.vrapper.core.tests/src/net/sourceforge/vrapper/core/tests/cases/RemappingTests.java @@ -224,6 +224,19 @@ public void testMotionsWithoutOMap() { checkCommand(forKeySeq("dams"), "so old", ' ', "McDonnaLD had some $LLaz", "", 'o', "me $LLaz"); + + // sanity check + checkCommand(forKeySeq("df0"), + "so old", ' ', "McD0nnaLD had some $LLaz", + "so old", 'n', "naLD had some $LLaz"); + + type(parseKeyStrokes(":onoremap 0 0x")); + checkCommand(forKeySeq("d0"), + "so old", ' ', "McD0nnaLD had some $LLaz", + "", 'M', "cD0nnaLD had some $LLaz"); + checkCommand(forKeySeq("df0"), + "so old", ' ', "McD0nnaLD had some $LLaz", + "so old", 'n', "naLD had some $LLaz"); } @Test diff --git a/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/modes/KeyMapResolver.java b/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/modes/KeyMapResolver.java index 8e21f9889..47cdc56d1 100644 --- a/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/modes/KeyMapResolver.java +++ b/net.sourceforge.vrapper.core/src/net/sourceforge/vrapper/vim/modes/KeyMapResolver.java @@ -30,17 +30,16 @@ public final class KeyMapResolver { public void press(KeyStroke key) { if (currentState != null) { Transition trans = currentState.press(key); - if (trans != null) { + if (trans == null) { + currentState = null; + lastValue = null; + } else { currentState = trans.getNextState(); + lastValue = trans.getValue(); } - lastValue = getValue(trans); } } - private String getValue(Transition trans) { - return trans != null ? trans.getValue() : null; - } - public String getKeyMapName() { return lastValue; }