From 1a1f261e7c7315e2f7c6fbcc4a990ffd2b6ff53e Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 22 Mar 2019 12:00:39 +0100 Subject: [PATCH] FakeVim: Fix pasting over VisualMode-selections Task-number: QTCREATORBUG-22186 Change-Id: I218c70aaca1fc49df8e474065746688243cf9c61 Reviewed-by: Lukas Holecek Reviewed-by: Mitja Schmakeit Reviewed-by: hjk --- src/plugins/fakevim/fakevimhandler.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index e808848de9b..955f3f60626 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -2061,7 +2061,7 @@ public: void pasteText(bool afterCursor); - void cutSelectedText(); + void cutSelectedText(int reg = 0); void joinLines(int count, bool preserveSpace = false); @@ -7237,7 +7237,7 @@ void FakeVimHandler::Private::pasteText(bool afterCursor) bool pasteAfter = isVisualMode() ? false : afterCursor; if (isVisualMode()) - cutSelectedText(); + cutSelectedText('"'); switch (rangeMode) { case RangeCharMode: { @@ -7318,7 +7318,7 @@ void FakeVimHandler::Private::pasteText(bool afterCursor) endEditBlock(); } -void FakeVimHandler::Private::cutSelectedText() +void FakeVimHandler::Private::cutSelectedText(int reg) { pushUndoState(); @@ -7329,8 +7329,11 @@ void FakeVimHandler::Private::cutSelectedText() if (visualMode && g.rangemode == RangeCharMode) ++range.endPos; + if (!reg) + reg = m_register; + g.submode = DeleteSubMode; - yankText(range, m_register); + yankText(range, reg); removeText(range); g.submode = NoSubMode;