我正在尝试编写自己的使用缩进的代码折叠算法。
这是一个代码段(使用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天了,但是它们都没有起作用,而且显然太混乱了。