mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2024-11-25 07:42:59 +01:00
Compare commits
1 Commits
54c16c97b9
...
ea703bce69
Author | SHA1 | Date | |
---|---|---|---|
ea703bce69 |
@ -448,6 +448,11 @@ abstract class VimTestCase {
|
|||||||
return NeovimTesting.getMark(char)
|
return NeovimTesting.getMark(char)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun assertRegister(char: Char, expected: String?) {
|
||||||
|
val actual = injector.registerGroup.getRegister(char)?.keys?.let(injector.parser::toKeyNotation)
|
||||||
|
assertEquals(expected, actual, "Wrong register contents")
|
||||||
|
}
|
||||||
|
|
||||||
protected fun assertState(modeAfter: Mode) {
|
protected fun assertState(modeAfter: Mode) {
|
||||||
assertMode(modeAfter)
|
assertMode(modeAfter)
|
||||||
assertCaretsVisualAttributes()
|
assertCaretsVisualAttributes()
|
||||||
|
@ -47,10 +47,7 @@ class MacroActionTest : VimTestCase() {
|
|||||||
val editor = typeTextInFile(injector.parser.parseKeys("qa" + "3l" + "q"), "on<caret>e two three\n")
|
val editor = typeTextInFile(injector.parser.parseKeys("qa" + "3l" + "q"), "on<caret>e two three\n")
|
||||||
val commandState = editor.vim.vimStateMachine
|
val commandState = editor.vim.vimStateMachine
|
||||||
kotlin.test.assertFalse(commandState.isRecording)
|
kotlin.test.assertFalse(commandState.isRecording)
|
||||||
val registerGroup = VimPlugin.getRegister()
|
assertRegister('a', "3l")
|
||||||
val register = registerGroup.getRegister('a')
|
|
||||||
assertNotNull<Any>(register)
|
|
||||||
kotlin.test.assertEquals("3l", register.text)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -58,9 +55,7 @@ class MacroActionTest : VimTestCase() {
|
|||||||
configureByText("")
|
configureByText("")
|
||||||
enterCommand("imap pp hello")
|
enterCommand("imap pp hello")
|
||||||
typeText(injector.parser.parseKeys("qa" + "i" + "pp<Esc>" + "q"))
|
typeText(injector.parser.parseKeys("qa" + "i" + "pp<Esc>" + "q"))
|
||||||
val register = VimPlugin.getRegister().getRegister('a')
|
assertRegister('a', "ipp<Esc>")
|
||||||
assertNotNull<Any>(register)
|
|
||||||
kotlin.test.assertEquals("ipp<Esc>", injector.parser.toKeyNotation(register.keys))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -68,7 +63,7 @@ class MacroActionTest : VimTestCase() {
|
|||||||
typeTextInFile(injector.parser.parseKeys("qa" + "i" + "<C-K>OK<Esc>" + "q"), "")
|
typeTextInFile(injector.parser.parseKeys("qa" + "i" + "<C-K>OK<Esc>" + "q"), "")
|
||||||
val register = VimPlugin.getRegister().getRegister('a')
|
val register = VimPlugin.getRegister().getRegister('a')
|
||||||
assertNotNull<Any>(register)
|
assertNotNull<Any>(register)
|
||||||
kotlin.test.assertEquals("i<C-K>OK<Esc>", injector.parser.toKeyNotation(register.keys))
|
assertRegister('a', "i<C-K>OK<Esc>")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -141,8 +136,8 @@ class MacroActionTest : VimTestCase() {
|
|||||||
assertState("4\n5\n")
|
assertState("4\n5\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Broken, see the resulting text
|
@Test
|
||||||
fun `ignore test macro with macro`() {
|
fun `test macro with macro`() {
|
||||||
val content = """
|
val content = """
|
||||||
Lorem Ipsum
|
Lorem Ipsum
|
||||||
|
|
||||||
@ -152,16 +147,55 @@ class MacroActionTest : VimTestCase() {
|
|||||||
Cras id tellus in ex imperdiet egestas.
|
Cras id tellus in ex imperdiet egestas.
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
configureByText(content)
|
configureByText(content)
|
||||||
typeText(injector.parser.parseKeys("qa" + "l" + "q" + "qb" + "10@a" + "q" + "2@b"))
|
typeText(
|
||||||
|
injector.parser.parseKeys(
|
||||||
|
"qa" + "l" + "q" +
|
||||||
|
"qb" + "6@a" + "q" +
|
||||||
|
"^" + "3@b"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
val startOffset = content.rangeOf("rocks").startOffset
|
assertRegister('b', "6@a")
|
||||||
|
assertState("""
|
||||||
|
Lorem Ipsum
|
||||||
|
|
||||||
waitAndAssert {
|
Lorem ipsum dolor ${c}sit amet,
|
||||||
println(fixture.editor.caretModel.offset)
|
consectetur adipiscing elit
|
||||||
println(startOffset)
|
Sed in orci mauris.
|
||||||
println()
|
Cras id tellus in ex imperdiet egestas.
|
||||||
startOffset == fixture.editor.caretModel.offset
|
""".trimIndent())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `test macro with macro with macro`() {
|
||||||
|
val content = """
|
||||||
|
Lorem Ipsum
|
||||||
|
|
||||||
|
${c}Lorem ipsum dolor sit amet,
|
||||||
|
consectetur adipiscing elit
|
||||||
|
Sed in orci mauris.
|
||||||
|
Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimIndent()
|
||||||
|
configureByText(content)
|
||||||
|
typeText(
|
||||||
|
injector.parser.parseKeys(
|
||||||
|
"qa" + "l" + "q" +
|
||||||
|
"qb" + "3@a" + "q" +
|
||||||
|
"qc" + "2@b" + "q" +
|
||||||
|
"^" + "3@c"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertRegister('b', "3@a")
|
||||||
|
assertRegister('c', "2@b")
|
||||||
|
assertState("""
|
||||||
|
Lorem Ipsum
|
||||||
|
|
||||||
|
Lorem ipsum dolor ${c}sit amet,
|
||||||
|
consectetur adipiscing elit
|
||||||
|
Sed in orci mauris.
|
||||||
|
Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimIndent())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -102,8 +102,9 @@ public class KeyHandler {
|
|||||||
// If this is a "regular" character keystroke, get the character
|
// If this is a "regular" character keystroke, get the character
|
||||||
val chKey: Char = if (key.keyChar == KeyEvent.CHAR_UNDEFINED) 0.toChar() else key.keyChar
|
val chKey: Char = if (key.keyChar == KeyEvent.CHAR_UNDEFINED) 0.toChar() else key.keyChar
|
||||||
|
|
||||||
// We only record unmapped keystrokes. If we've recursed to handle mapping, don't record anything.
|
// We only record unmapped keystrokes.
|
||||||
var shouldRecord = handleKeyRecursionCount == 0 && editorState.isRecording
|
// If we've recursed to handle mapping, or executing a macro, don't record anything.
|
||||||
|
var shouldRecord = handleKeyRecursionCount == 0 && editorState.isRecording && !injector.macro.isExecutingMacro
|
||||||
handleKeyRecursionCount++
|
handleKeyRecursionCount++
|
||||||
try {
|
try {
|
||||||
LOG.trace("Start key processing...")
|
LOG.trace("Start key processing...")
|
||||||
|
Loading…
Reference in New Issue
Block a user