From e2eb4efb45859ba7de5aeaa8f06c60a64ae43e1c Mon Sep 17 00:00:00 2001 From: Le Tan Date: Wed, 8 Aug 2018 20:40:45 +0800 Subject: [PATCH] MdEidtOperations: support * as list bullet in auto list --- src/utils/veditutils.cpp | 17 +++++++++++------ src/utils/veditutils.h | 2 ++ src/utils/vutils.cpp | 2 ++ src/utils/vutils.h | 2 ++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/utils/veditutils.cpp b/src/utils/veditutils.cpp index c986be18..ce506f03 100644 --- a/src/utils/veditutils.cpp +++ b/src/utils/veditutils.cpp @@ -62,15 +62,15 @@ bool VEditUtils::insertListMarkAsPreviousBlock(QTextCursor &p_cursor) } QString text = preBlock.text(); - QRegExp regExp("^\\s*(-|\\d+\\.)\\s"); + QRegExp regExp(VUtils::c_listRegExp); int regIdx = regExp.indexIn(text); if (regIdx != -1) { ret = true; V_ASSERT(regExp.captureCount() == 1); QString markText = regExp.capturedTexts()[1]; - if (markText == "-") { - // Insert - in front. - p_cursor.insertText("- "); + if (isListBullet(markText)) { + // Insert bullet in front. + p_cursor.insertText(markText + " "); } else { // markText is like "123.". V_ASSERT(markText.endsWith('.')); @@ -557,7 +557,7 @@ void VEditUtils::scrollBlockInPage(QPlainTextEdit *p_edit, bool VEditUtils::isListBlock(const QTextBlock &p_block, int *p_seq) { QString text = p_block.text(); - QRegExp regExp("^\\s*(-|\\d+\\.)\\s"); + QRegExp regExp(VUtils::c_listRegExp); if (p_seq) { *p_seq = -1; @@ -570,7 +570,7 @@ bool VEditUtils::isListBlock(const QTextBlock &p_block, int *p_seq) V_ASSERT(regExp.captureCount() == 1); QString markText = regExp.capturedTexts()[1]; - if (markText != "-") { + if (!isListBullet(markText)) { V_ASSERT(markText.endsWith('.')); bool ok = false; int num = markText.left(markText.size() - 1).toInt(&ok, 10); @@ -583,6 +583,11 @@ bool VEditUtils::isListBlock(const QTextBlock &p_block, int *p_seq) return true; } +bool VEditUtils::isListBullet(const QString &p_str) +{ + return p_str == "-" || p_str == "*"; +} + bool VEditUtils::isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock) { if (p_posInBlock <= 0) { diff --git a/src/utils/veditutils.h b/src/utils/veditutils.h index 14f17d47..e5f293f3 100644 --- a/src/utils/veditutils.h +++ b/src/utils/veditutils.h @@ -139,6 +139,8 @@ public: // Returns true if it is an auto list block. static bool isListBlock(const QTextBlock &p_block, int *p_seq = NULL); + static bool isListBullet(const QString &p_str); + // If the start of @p_block to postition @p_posInBlock are spaces. static bool isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock); diff --git a/src/utils/vutils.cpp b/src/utils/vutils.cpp index 0e4671a4..5cd1e93f 100644 --- a/src/utils/vutils.cpp +++ b/src/utils/vutils.cpp @@ -59,6 +59,8 @@ const QString VUtils::c_headerRegExp = QString("^(#{1,6})\\s+(((\\d+\\.)+(?=\\s) const QString VUtils::c_headerPrefixRegExp = QString("^(#{1,6}\\s+((\\d+\\.)+(?=\\s))?\\s*)($|(\\S.*)?$)"); +const QString VUtils::c_listRegExp = QString("^\\s*(-|\\*|\\d+\\.)\\s"); + void VUtils::initAvailableLanguage() { if (!s_availableLanguages.isEmpty()) { diff --git a/src/utils/vutils.h b/src/utils/vutils.h index 7756eea4..4c983b3b 100644 --- a/src/utils/vutils.h +++ b/src/utils/vutils.h @@ -399,6 +399,8 @@ public: // 1. prefix till the real header title content; static const QString c_headerPrefixRegExp; + static const QString c_listRegExp; + private: VUtils() {}