mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-03-05 06:32:51 +01:00
Assert register type with neovim
This commit is contained in:
parent
b24424330c
commit
15d173e628
src/com/maddyhome/idea/vim/group
test/org/jetbrains/plugins/ideavim
@ -85,10 +85,10 @@ public class RegisterGroup implements PersistentStateComponent<Element> {
|
||||
public static final char LAST_COMMAND_REGISTER = ':';
|
||||
public static final char LAST_INSERTED_TEXT_REGISTER = '.';
|
||||
public static final char SMALL_DELETION_REGISTER = '-';
|
||||
private static final char BLACK_HOLE_REGISTER = '_';
|
||||
private static final char ALTERNATE_BUFFER_REGISTER = '#'; // Not supported
|
||||
private static final char EXPRESSION_BUFFER_REGISTER = '='; // Not supported
|
||||
private static final char CURRENT_FILENAME_REGISTER = '%'; // Not supported
|
||||
public static final char BLACK_HOLE_REGISTER = '_';
|
||||
public static final char ALTERNATE_BUFFER_REGISTER = '#'; // Not supported
|
||||
public static final char EXPRESSION_BUFFER_REGISTER = '='; // Not supported
|
||||
public static final char CURRENT_FILENAME_REGISTER = '%'; // Not supported
|
||||
public static final @NonNls String CLIPBOARD_REGISTERS = "*+";
|
||||
private static final @NonNls String NUMBERED_REGISTERS = "0123456789";
|
||||
private static final @NonNls String NAMED_REGISTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
|
@ -25,6 +25,7 @@ import com.ensarsarajcic.neovim.java.corerpc.client.ProcessRpcConnection
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.LogicalPosition
|
||||
import com.maddyhome.idea.vim.VimPlugin
|
||||
import com.maddyhome.idea.vim.command.SelectionType
|
||||
import com.maddyhome.idea.vim.common.CharacterPosition
|
||||
import com.maddyhome.idea.vim.group.RegisterGroup
|
||||
import com.maddyhome.idea.vim.helper.VimBehaviorDiffers
|
||||
@ -105,15 +106,37 @@ internal object NeovimTesting {
|
||||
assertEquals(neovimState, ideavimState)
|
||||
}
|
||||
|
||||
private const val nonCheckingRegisters = RegisterGroup.CLIPBOARD_REGISTERS + RegisterGroup.LAST_INSERTED_TEXT_REGISTER
|
||||
private const val nonCheckingRegisters =
|
||||
RegisterGroup.CLIPBOARD_REGISTERS +
|
||||
RegisterGroup.LAST_INSERTED_TEXT_REGISTER +
|
||||
RegisterGroup.BLACK_HOLE_REGISTER +
|
||||
RegisterGroup.LAST_SEARCH_REGISTER +
|
||||
RegisterGroup.ALTERNATE_BUFFER_REGISTER +
|
||||
RegisterGroup.EXPRESSION_BUFFER_REGISTER +
|
||||
RegisterGroup.CURRENT_FILENAME_REGISTER
|
||||
|
||||
private fun assertRegisters() {
|
||||
for (register in RegisterGroup.VALID_REGISTERS) {
|
||||
if (register in nonCheckingRegisters) continue
|
||||
if (register in VimTestCase.Checks.neoVim.ignoredRegisters) continue
|
||||
val neovimRegister = neovimApi.callFunction("getreg", listOf(register)).get().toString()
|
||||
val ideavimRegister = VimPlugin.getRegister().getRegister(register)?.text ?: ""
|
||||
val vimPluginRegister = VimPlugin.getRegister().getRegister(register)
|
||||
val ideavimRegister = vimPluginRegister?.text ?: ""
|
||||
assertEquals("Register '$register'", neovimRegister, ideavimRegister)
|
||||
|
||||
if (neovimRegister.isNotEmpty()) {
|
||||
val neovimRegisterType = neovimApi.callFunction("getregtype", listOf(register)).get().toString()
|
||||
val expectedType = when (vimPluginRegister?.type) {
|
||||
SelectionType.CHARACTER_WISE -> "v"
|
||||
SelectionType.LINE_WISE -> "V"
|
||||
SelectionType.BLOCK_WISE -> "\u0016"
|
||||
else -> ""
|
||||
}
|
||||
|
||||
// We take only the first char because neovim returns width for block selection
|
||||
val neovimChar = neovimRegisterType.getOrNull(0)?.toString() ?: ""
|
||||
assertEquals("Register '$register'", expectedType, neovimChar)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user