1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-06-01 10:34:05 +02:00

Fix <CR> parsing

It's ^M, not ^J
This commit is contained in:
Filipp Vakhitov 2024-10-23 22:42:31 +03:00 committed by Alex Pláte
parent d2b929ddd0
commit 628b3ca89f
4 changed files with 10 additions and 7 deletions
src
test/java/org/jetbrains/plugins/ideavim/ex
testFixtures/kotlin/org/jetbrains/plugins/ideavim
vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api

View File

@ -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

View File

@ -109,7 +109,7 @@ class RegistersCommandTest : VimTestCase() {
assertExOutput(
"""
|Type Name Content
| c "a ^IHello World^J^[
| c "a ^IHello World^M^[
""".trimMargin(),
)
}

View File

@ -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?) {

View File

@ -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()
}