Commit 8dbbf9be authored by Christian Kamm's avatar Christian Kamm
Browse files

C++ indenter: Require explicit state update requests.

This will allow much faster indenting of selected areas as the state
doesn't have to be checked again for every line.
parent c2a33467
......@@ -1539,6 +1539,7 @@ void CPPEditor::indentBlock(QTextDocument *doc, QTextBlock block, QChar typedCha
codeFormatter.setIndentDeclarationMembers(true);
}
codeFormatter.updateStateUntil(block);
const int depth = codeFormatter.indentFor(block);
ts.indentLine(block, depth);
}
......
......@@ -446,12 +446,12 @@ int CodeFormatter::indentFor(const QTextBlock &block)
{
// qDebug() << "indenting for" << block.blockNumber() + 1;
requireStatesUntil(block);
restoreBlockState(block.previous());
correctIndentation(block);
return m_indentDepth;
}
void CodeFormatter::requireStatesUntil(const QTextBlock &endBlock)
void CodeFormatter::updateStateUntil(const QTextBlock &endBlock)
{
QStack<State> previousState = initialState();
QTextBlock it = endBlock.document()->firstBlock();
......@@ -473,7 +473,6 @@ void CodeFormatter::requireStatesUntil(const QTextBlock &endBlock)
//qDebug() << "recalc line" << it.blockNumber() + 1;
recalculateStateAfter(it);
}
restoreBlockState(endBlock.previous());
}
CodeFormatter::State CodeFormatter::state(int belowTop) const
......
......@@ -28,6 +28,7 @@ public:
CodeFormatter();
virtual ~CodeFormatter();
void updateStateUntil(const QTextBlock &block);
int indentFor(const QTextBlock &block);
void setTabSize(int tabSize);
......@@ -138,7 +139,6 @@ protected:
bool isBracelessState(int type) const;
private:
void requireStatesUntil(const QTextBlock &block);
void recalculateStateAfter(const QTextBlock &block);
void storeBlockState(const QTextBlock &block);
void restoreBlockState(const QTextBlock &block);
......
......@@ -89,6 +89,8 @@ void checkIndent(QList<Line> data, int style = 0)
formatter.setIndentDeclarationBraces(true);
}
formatter.updateStateUntil(document.lastBlock());
int i = 0;
foreach (const Line &l, data) {
if (l.expectedIndent != -1) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment