缩进折叠时处理空行

2024-10-04 05:29:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是一个代码段(用C++编写的QT5框架)

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")

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

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

我怎样才能正确处理这些线路?我已经试了两天自己的解决方案了,但都不管用,而且显然太杂乱了


Tags: text算法代码段blocklengthnextintappend