forked from qt-creator/qt-creator
FakeVim: implement C-r{register} in insert mode
In normal mode: input: |aaa bbb keys: yiw A C-r 0 result: aaa bbbaaa Change-Id: Ifb2ac8603adf9c897d169f4ab282a3ee97896684 Reviewed-by: Lukas Holecek <hluk@email.cz> Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
@@ -2526,6 +2526,14 @@ void FakeVimPlugin::test_vim_copy_paste()
|
|||||||
// yank register is only used for y{motion} commands
|
// yank register is only used for y{motion} commands
|
||||||
data.setText("aaa bbb ccc");
|
data.setText("aaa bbb ccc");
|
||||||
KEYS("yiwwdiw\"0P", "aaa aaa ccc");
|
KEYS("yiwwdiw\"0P", "aaa aaa ccc");
|
||||||
|
|
||||||
|
// paste register in insert mode
|
||||||
|
data.setText("aaa bbb ccc ");
|
||||||
|
KEYS("yiwA<C-r>0", "aaa bbb ccc aaa");
|
||||||
|
KEYS("<C-r><Esc>x", "aaa bbb ccc aaax");
|
||||||
|
KEYS("<Esc>dd", "");
|
||||||
|
data.setText("aaa bbb");
|
||||||
|
KEYS("\"ayawA<C-r>a", "aaa bbbaaa ");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FakeVimPlugin::test_vim_undo_redo()
|
void FakeVimPlugin::test_vim_undo_redo()
|
||||||
|
@@ -193,7 +193,8 @@ enum SubMode
|
|||||||
ReplaceSubMode, // Used for r
|
ReplaceSubMode, // Used for r
|
||||||
MacroRecordSubMode, // Used for q
|
MacroRecordSubMode, // Used for q
|
||||||
MacroExecuteSubMode, // Used for @
|
MacroExecuteSubMode, // Used for @
|
||||||
CtrlVSubMode // Used for Ctrl-v in insert mode
|
CtrlVSubMode, // Used for Ctrl-v in insert mode
|
||||||
|
CtrlRSubMode // Used for Ctrl-r in insert mode
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! A \e SubSubMode is used for things that require one more data item
|
/*! A \e SubSubMode is used for things that require one more data item
|
||||||
@@ -3629,6 +3630,10 @@ void FakeVimHandler::Private::updateMiniBuffer()
|
|||||||
msg = _("VISUAL BLOCK");
|
msg = _("VISUAL BLOCK");
|
||||||
} else if (g.mode == InsertMode) {
|
} else if (g.mode == InsertMode) {
|
||||||
msg = _("-- INSERT --");
|
msg = _("-- INSERT --");
|
||||||
|
if (g.submode == CtrlRSubMode)
|
||||||
|
msg += _(" ^R");
|
||||||
|
else if (g.submode == CtrlVSubMode)
|
||||||
|
msg += _(" ^V");
|
||||||
} else if (g.mode == ReplaceMode) {
|
} else if (g.mode == ReplaceMode) {
|
||||||
msg = _("-- REPLACE --");
|
msg = _("-- REPLACE --");
|
||||||
} else {
|
} else {
|
||||||
@@ -4848,7 +4853,16 @@ void FakeVimHandler::Private::finishInsertMode()
|
|||||||
void FakeVimHandler::Private::handleInsertMode(const Input &input)
|
void FakeVimHandler::Private::handleInsertMode(const Input &input)
|
||||||
{
|
{
|
||||||
if (input.isEscape()) {
|
if (input.isEscape()) {
|
||||||
finishInsertMode();
|
if (g.submode == CtrlRSubMode || g.submode == CtrlVSubMode) {
|
||||||
|
g.submode = NoSubMode;
|
||||||
|
g.subsubmode = NoSubSubMode;
|
||||||
|
updateMiniBuffer();
|
||||||
|
} else {
|
||||||
|
finishInsertMode();
|
||||||
|
}
|
||||||
|
} else if (g.submode == CtrlRSubMode) {
|
||||||
|
m_cursor.insertText(registerContents(input.asChar().unicode()));
|
||||||
|
g.submode = NoSubMode;
|
||||||
} else if (g.submode == CtrlVSubMode) {
|
} else if (g.submode == CtrlVSubMode) {
|
||||||
if (g.subsubmode == NoSubSubMode) {
|
if (g.subsubmode == NoSubSubMode) {
|
||||||
g.subsubmode = CtrlVUnicodeSubSubMode;
|
g.subsubmode = CtrlVUnicodeSubSubMode;
|
||||||
@@ -4908,6 +4922,11 @@ void FakeVimHandler::Private::handleInsertMode(const Input &input)
|
|||||||
} else if (input.isControl('v')) {
|
} else if (input.isControl('v')) {
|
||||||
g.submode = CtrlVSubMode;
|
g.submode = CtrlVSubMode;
|
||||||
g.subsubmode = NoSubSubMode;
|
g.subsubmode = NoSubSubMode;
|
||||||
|
updateMiniBuffer();
|
||||||
|
} else if (input.isControl('r')) {
|
||||||
|
g.submode = CtrlRSubMode;
|
||||||
|
g.subsubmode = NoSubSubMode;
|
||||||
|
updateMiniBuffer();
|
||||||
} else if (input.isControl('w')) {
|
} else if (input.isControl('w')) {
|
||||||
const int blockNumber = m_cursor.blockNumber();
|
const int blockNumber = m_cursor.blockNumber();
|
||||||
const int endPos = position();
|
const int endPos = position();
|
||||||
|
Reference in New Issue
Block a user