FakeVim: Fix pasting over VisualMode-selections

Task-number: QTCREATORBUG-22186
Change-Id: I218c70aaca1fc49df8e474065746688243cf9c61
Reviewed-by: Lukas Holecek <hluk@email.cz>
Reviewed-by: Mitja Schmakeit <mitja.schmakeit@aucos.de>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
hjk
2019-03-22 12:00:39 +01:00
parent 266e525a4e
commit 1a1f261e7c

View File

@@ -2061,7 +2061,7 @@ public:
void pasteText(bool afterCursor); void pasteText(bool afterCursor);
void cutSelectedText(); void cutSelectedText(int reg = 0);
void joinLines(int count, bool preserveSpace = false); void joinLines(int count, bool preserveSpace = false);
@@ -7237,7 +7237,7 @@ void FakeVimHandler::Private::pasteText(bool afterCursor)
bool pasteAfter = isVisualMode() ? false : afterCursor; bool pasteAfter = isVisualMode() ? false : afterCursor;
if (isVisualMode()) if (isVisualMode())
cutSelectedText(); cutSelectedText('"');
switch (rangeMode) { switch (rangeMode) {
case RangeCharMode: { case RangeCharMode: {
@@ -7318,7 +7318,7 @@ void FakeVimHandler::Private::pasteText(bool afterCursor)
endEditBlock(); endEditBlock();
} }
void FakeVimHandler::Private::cutSelectedText() void FakeVimHandler::Private::cutSelectedText(int reg)
{ {
pushUndoState(); pushUndoState();
@@ -7329,8 +7329,11 @@ void FakeVimHandler::Private::cutSelectedText()
if (visualMode && g.rangemode == RangeCharMode) if (visualMode && g.rangemode == RangeCharMode)
++range.endPos; ++range.endPos;
if (!reg)
reg = m_register;
g.submode = DeleteSubMode; g.submode = DeleteSubMode;
yankText(range, m_register); yankText(range, reg);
removeText(range); removeText(range);
g.submode = NoSubMode; g.submode = NoSubMode;