通过缩进折叠时处理空行

时间:2019-08-25 11:24:00

标签: python c++ algorithm qt5

我正在尝试编写自己的使用缩进的代码折叠算法。

这是一个代码段(使用Qt5框架以C ++语言编写)

QList<QTextBlock> PlainTextEdit::getFoldableBlocks(QTextBlock rootBlock) {

    int indentation = rootBlock.text().length() - rootBlock.text().trimmed().length();
    QTextBlock block = rootBlock.next();
    QString blockText = block.text();
    QList<QTextBlock> foldableBlocks = {};
    QList<int> toRemove = {};


    while (block.isValid()) {
        int currentIndentation = block.text().length() - block.text().trimmed().length();

        if (currentIndentation == indentation && block.text().length() != 0) {
            foldableBlocks.append(block);
            break;
        } else {
            qDebug() << block.blockNumber() + 1;
            foldableBlocks.append(block);
        }

        block = block.next();

    }

    return foldableBlocks;
}

现在在以下代码段中使用该算法时:



class Test(object):

    def __init__(self):


        print("Hello world!")


class Example(object):
    def __init__(self):
        print("Hello world")

然后第一个类将被错误地折叠,因为它认为空行意味着该类基本上是空的

第二个类将被正确折叠,因为它们之间没有空行。

如何正确处理这些行?我已经尝试了自己的解决方案2天了,但是它们都没有起作用,而且显然太混乱了。

0 个答案:

没有答案