From 9822fb65df6d0514bfdb48b79d72824f3e6d5781 Mon Sep 17 00:00:00 2001 From: Roopesh Chander <roop@forwardbias.in> Date: Sat, 31 Oct 2009 15:26:45 +0530 Subject: [PATCH] cleanWhitespace() checkes whether it has to change indentation or not. handle that. --- src/plugins/texteditor/basetextdocument.cpp | 2 +- src/plugins/texteditor/tabsettings.cpp | 8 +++++--- src/plugins/texteditor/tabsettings.h | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp index 2e57eafd13d..7d598cc07bb 100644 --- a/src/plugins/texteditor/basetextdocument.cpp +++ b/src/plugins/texteditor/basetextdocument.cpp @@ -327,7 +327,7 @@ void BaseTextDocument::cleanWhitespace(QTextCursor& cursor, bool cleanIndentatio cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, trailing); cursor.removeSelectedText(); } - if (cleanIndentation && !m_tabSettings.isIndentationClean(blockText)) { + if (cleanIndentation && !m_tabSettings.isIndentationClean(block)) { cursor.setPosition(block.position()); int firstNonSpace = m_tabSettings.firstNonSpace(blockText); if (firstNonSpace == blockText.length()) { diff --git a/src/plugins/texteditor/tabsettings.cpp b/src/plugins/texteditor/tabsettings.cpp index 10fe3bb49ed..efc40526947 100644 --- a/src/plugins/texteditor/tabsettings.cpp +++ b/src/plugins/texteditor/tabsettings.cpp @@ -149,10 +149,12 @@ int TabSettings::trailingWhitespaces(const QString &text) const return i; } -bool TabSettings::isIndentationClean(const QString &text) const +bool TabSettings::isIndentationClean(const QTextBlock &block) const { int i = 0; int spaceCount = 0; + QString text = block.text(); + bool spacesForTabs = guessSpacesForTabs(block); while (i < text.size()) { QChar c = text.at(i); if (!c.isSpace()) @@ -160,10 +162,10 @@ bool TabSettings::isIndentationClean(const QString &text) const if (c == QLatin1Char(' ')) { ++spaceCount; - if (!m_spacesForTabs && spaceCount == m_tabSize) + if (!spacesForTabs && spaceCount == m_tabSize) return false; } else if (c == QLatin1Char('\t')) { - if (m_spacesForTabs || spaceCount != m_indentSize) + if (spacesForTabs || spaceCount != m_indentSize) return false; spaceCount = 0; } diff --git a/src/plugins/texteditor/tabsettings.h b/src/plugins/texteditor/tabsettings.h index d6bd2b0afeb..88950bd597c 100644 --- a/src/plugins/texteditor/tabsettings.h +++ b/src/plugins/texteditor/tabsettings.h @@ -72,7 +72,7 @@ struct TEXTEDITOR_EXPORT TabSettings void reindentLine(QTextBlock block, int delta) const; int trailingWhitespaces(const QString &text) const; - bool isIndentationClean(const QString &text) const; + bool isIndentationClean(const QTextBlock &block) const; bool tabShouldIndent(const QTextDocument *document, QTextCursor cursor, int *suggestedPosition = 0) const; bool guessSpacesForTabs(const QTextBlock& block) const; -- GitLab