diff --git a/src/test/java/org/jetbrains/plugins/ideavim/ex/ExEntryTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/ex/ExEntryTest.kt index 073d8d575..b0c7cf946 100644 --- a/src/test/java/org/jetbrains/plugins/ideavim/ex/ExEntryTest.kt +++ b/src/test/java/org/jetbrains/plugins/ideavim/ex/ExEntryTest.kt @@ -617,13 +617,11 @@ class ExEntryTest : VimTestCase() { fun `test insert multi-line register`() { // parseKeys parses <CR> in a way that Register#getText doesn't like val keys = mutableListOf<KeyStroke>() - keys.addAll(injector.parser.parseKeys("hello")) - keys.add(KeyStroke.getKeyStroke('\n')) - keys.addAll(injector.parser.parseKeys("world")) + keys.addAll(injector.parser.parseKeys("hello<CR>world")) VimPlugin.getRegister().setKeys('c', keys) typeExInput(":<C-R>c") - assertExText("hello world") + assertExText("hello\u000Dworld") } // TODO: Test other special registers, if/when supported diff --git a/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/RegistersCommandTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/RegistersCommandTest.kt index a6675771a..94dfaffb7 100644 --- a/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/RegistersCommandTest.kt +++ b/src/test/java/org/jetbrains/plugins/ideavim/ex/implementation/commands/RegistersCommandTest.kt @@ -109,7 +109,7 @@ class RegistersCommandTest : VimTestCase() { assertExOutput( """ |Type Name Content - | c "a ^IHello World^J^[ + | c "a ^IHello World^M^[ """.trimMargin(), ) } diff --git a/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt b/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt index 9f2f250fd..abae2b398 100644 --- a/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt +++ b/src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt @@ -552,8 +552,11 @@ abstract class VimNoWriteActionTestCase { } protected fun assertRegister(char: Char, expected: String?) { - val actual = injector.registerGroup.getRegister(char)?.keys?.let(injector.parser::toKeyNotation) - assertEquals(expected, actual, "Wrong register contents") + if (expected == null) { + assertNull(injector.registerGroup.getRegister(char)) + } else { + assertEquals(expected, injector.registerGroup.getRegister(char)?.printableString) + } } protected fun assertRegisterString(char: Char, expected: String?) { diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt index bf0b4fc45..a18520c50 100644 --- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt +++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt @@ -43,6 +43,8 @@ abstract class VimStringParserBase : VimStringParser { } else { (key.keyCode - 'A'.code + 1).toChar() } + } else if (key.keyChar == KeyEvent.CHAR_UNDEFINED && key.keyCode == KeyEvent.VK_ENTER) { + return '\u000D' } return key.keyCode.toChar() }