void TabSettings::reindentLine(QTextBlock block, int delta) const { const QString text = block.text(); const int oldBlockLength = text.size(); int oldIndent = indentationColumn(text); int newIndent = qMax(oldIndent + delta, 0); if (oldIndent == newIndent) return; const QString indentString = indentationString(0, newIndent); newIndent = indentString.length(); if (oldBlockLength == indentString.length() && text == indentString) return; QTextCursor cursor(block); cursor.beginEditBlock(); cursor.movePosition(QTextCursor::StartOfBlock); cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, firstNonSpace(text)); cursor.removeSelectedText(); cursor.insertText(indentString); cursor.endEditBlock(); }
void TabSettings::reindentLine(QTextBlock block, int delta) const { const QString text = block.text(); const int oldBlockLength = text.size(); int oldIndent = indentationColumn(text); int newIndent = qMax(oldIndent + delta, 0); if (oldIndent == newIndent) return; QString indentString; if (m_tabPolicy == TabsOnlyTabPolicy && m_tabSize == m_indentSize) { // user likes tabs for spaces and uses tabs for indentation, preserve padding int padding = qMin(maximumPadding(text), newIndent); indentString = indentationString(0, newIndent - padding, block); indentString += QString(padding, QLatin1Char(' ')); } else { indentString = indentationString(0, newIndent, block); } if (oldBlockLength == indentString.length() && text == indentString) return; QTextCursor cursor(block); cursor.beginEditBlock(); cursor.movePosition(QTextCursor::StartOfBlock); cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, firstNonSpace(text)); cursor.removeSelectedText(); cursor.insertText(indentString); cursor.endEditBlock(); }
void TabSettings::indentLine(QTextBlock block, int newIndent) const { const QString text = block.text(); const int oldBlockLength = text.size(); // Quickly check whether indenting is required. if (indentationColumn(text) == newIndent) return; const QString indentString = indentationString(0, newIndent, block); newIndent = indentString.length(); if (oldBlockLength == indentString.length() && text == indentString) return; QTextCursor cursor(block); cursor.beginEditBlock(); cursor.movePosition(QTextCursor::StartOfBlock); cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor, firstNonSpace(text)); cursor.removeSelectedText(); cursor.insertText(indentString); cursor.endEditBlock(); }