From a265aed035fc017e857668f5c7238b17057f1233 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Mon, 23 Oct 2017 21:41:34 +0800 Subject: [PATCH] bug-fix: insert code block inline if it is at the end of a space block --- src/utils/veditutils.cpp | 5 +++++ src/utils/veditutils.h | 3 +++ src/vcaptain.cpp | 3 --- src/vmdeditoperations.cpp | 2 +- src/vmdeditoperations.h | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/utils/veditutils.cpp b/src/utils/veditutils.cpp index 36d08495..789f42c1 100644 --- a/src/utils/veditutils.cpp +++ b/src/utils/veditutils.cpp @@ -458,6 +458,11 @@ bool VEditUtils::isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock return text.left(p_posInBlock).trimmed().isEmpty(); } +bool VEditUtils::isSpaceBlock(const QTextBlock &p_block) +{ + return p_block.text().trimmed().isEmpty(); +} + void VEditUtils::deleteIndentAndListMark(QTextCursor &p_cursor) { V_ASSERT(!p_cursor.hasSelection()); diff --git a/src/utils/veditutils.h b/src/utils/veditutils.h index b630180d..bc0e3919 100644 --- a/src/utils/veditutils.h +++ b/src/utils/veditutils.h @@ -121,6 +121,9 @@ public: // If the start of @p_block to postition @p_posInBlock are spaces. static bool isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock); + // If block @p_block only contains spaces. + static bool isSpaceBlock(const QTextBlock &p_block); + // @p_cursor is positioned right after auto indetn and auto list. // Need to call setTextCursor() to make it take effect. static void deleteIndentAndListMark(QTextCursor &p_cursor); diff --git a/src/vcaptain.cpp b/src/vcaptain.cpp index 0bfc6d79..5a4127df 100644 --- a/src/vcaptain.cpp +++ b/src/vcaptain.cpp @@ -14,9 +14,6 @@ extern VMainWindow *g_mainWin; extern VConfigManager *g_config; -// 3s pending time after the leader keys. -const int c_pendingTime = 3 * 1000; - VCaptain::VCaptain(QWidget *p_parent) : QWidget(p_parent), m_mode(CaptainMode::Normal), diff --git a/src/vmdeditoperations.cpp b/src/vmdeditoperations.cpp index 0f73de01..c3115ab5 100644 --- a/src/vmdeditoperations.cpp +++ b/src/vmdeditoperations.cpp @@ -881,7 +881,7 @@ void VMdEditOperations::decorateCodeBlock() if (!cursor.atBlockEnd()) { cursor.insertBlock(); cursor.movePosition(QTextCursor::PreviousBlock); - } else if (cursor.atBlockStart()) { + } else if (cursor.atBlockStart() || VEditUtils::isSpaceBlock(block)) { insertInline = true; } diff --git a/src/vmdeditoperations.h b/src/vmdeditoperations.h index d8609339..50333e5b 100644 --- a/src/vmdeditoperations.h +++ b/src/vmdeditoperations.h @@ -26,7 +26,7 @@ public: bool insertImageFromURL(const QUrl &p_imageUrl) Q_DECL_OVERRIDE; bool insertLink(const QString &p_linkText, - const QString &p_linkUrl); + const QString &p_linkUrl) Q_DECL_OVERRIDE; // Insert decoration markers or decorate selected text. // If it is Vim Normal mode, change to Insert mode first.