MdEidtOperations: support * as list bullet in auto list

This commit is contained in:
Le Tan 2018-08-08 20:40:45 +08:00
parent 8055f17d1f
commit e2eb4efb45
4 changed files with 17 additions and 6 deletions

View File

@ -62,15 +62,15 @@ bool VEditUtils::insertListMarkAsPreviousBlock(QTextCursor &p_cursor)
} }
QString text = preBlock.text(); QString text = preBlock.text();
QRegExp regExp("^\\s*(-|\\d+\\.)\\s"); QRegExp regExp(VUtils::c_listRegExp);
int regIdx = regExp.indexIn(text); int regIdx = regExp.indexIn(text);
if (regIdx != -1) { if (regIdx != -1) {
ret = true; ret = true;
V_ASSERT(regExp.captureCount() == 1); V_ASSERT(regExp.captureCount() == 1);
QString markText = regExp.capturedTexts()[1]; QString markText = regExp.capturedTexts()[1];
if (markText == "-") { if (isListBullet(markText)) {
// Insert - in front. // Insert bullet in front.
p_cursor.insertText("- "); p_cursor.insertText(markText + " ");
} else { } else {
// markText is like "123.". // markText is like "123.".
V_ASSERT(markText.endsWith('.')); V_ASSERT(markText.endsWith('.'));
@ -557,7 +557,7 @@ void VEditUtils::scrollBlockInPage(QPlainTextEdit *p_edit,
bool VEditUtils::isListBlock(const QTextBlock &p_block, int *p_seq) bool VEditUtils::isListBlock(const QTextBlock &p_block, int *p_seq)
{ {
QString text = p_block.text(); QString text = p_block.text();
QRegExp regExp("^\\s*(-|\\d+\\.)\\s"); QRegExp regExp(VUtils::c_listRegExp);
if (p_seq) { if (p_seq) {
*p_seq = -1; *p_seq = -1;
@ -570,7 +570,7 @@ bool VEditUtils::isListBlock(const QTextBlock &p_block, int *p_seq)
V_ASSERT(regExp.captureCount() == 1); V_ASSERT(regExp.captureCount() == 1);
QString markText = regExp.capturedTexts()[1]; QString markText = regExp.capturedTexts()[1];
if (markText != "-") { if (!isListBullet(markText)) {
V_ASSERT(markText.endsWith('.')); V_ASSERT(markText.endsWith('.'));
bool ok = false; bool ok = false;
int num = markText.left(markText.size() - 1).toInt(&ok, 10); 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; return true;
} }
bool VEditUtils::isListBullet(const QString &p_str)
{
return p_str == "-" || p_str == "*";
}
bool VEditUtils::isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock) bool VEditUtils::isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock)
{ {
if (p_posInBlock <= 0) { if (p_posInBlock <= 0) {

View File

@ -139,6 +139,8 @@ public:
// Returns true if it is an auto list block. // Returns true if it is an auto list block.
static bool isListBlock(const QTextBlock &p_block, int *p_seq = NULL); 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. // If the start of @p_block to postition @p_posInBlock are spaces.
static bool isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock); static bool isSpaceToBlockStart(const QTextBlock &p_block, int p_posInBlock);

View File

@ -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_headerPrefixRegExp = QString("^(#{1,6}\\s+((\\d+\\.)+(?=\\s))?\\s*)($|(\\S.*)?$)");
const QString VUtils::c_listRegExp = QString("^\\s*(-|\\*|\\d+\\.)\\s");
void VUtils::initAvailableLanguage() void VUtils::initAvailableLanguage()
{ {
if (!s_availableLanguages.isEmpty()) { if (!s_availableLanguages.isEmpty()) {

View File

@ -399,6 +399,8 @@ public:
// 1. prefix till the real header title content; // 1. prefix till the real header title content;
static const QString c_headerPrefixRegExp; static const QString c_headerPrefixRegExp;
static const QString c_listRegExp;
private: private:
VUtils() {} VUtils() {}