Commit 9822fb65 authored by Roopesh Chander's avatar Roopesh Chander Committed by Thorbjørn Lindeijer
Browse files

cleanWhitespace() checkes whether it has to change indentation or not. handle that.

parent fde76601
...@@ -327,7 +327,7 @@ void BaseTextDocument::cleanWhitespace(QTextCursor& cursor, bool cleanIndentatio ...@@ -327,7 +327,7 @@ void BaseTextDocument::cleanWhitespace(QTextCursor& cursor, bool cleanIndentatio
cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, trailing); cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, trailing);
cursor.removeSelectedText(); cursor.removeSelectedText();
} }
if (cleanIndentation && !m_tabSettings.isIndentationClean(blockText)) { if (cleanIndentation && !m_tabSettings.isIndentationClean(block)) {
cursor.setPosition(block.position()); cursor.setPosition(block.position());
int firstNonSpace = m_tabSettings.firstNonSpace(blockText); int firstNonSpace = m_tabSettings.firstNonSpace(blockText);
if (firstNonSpace == blockText.length()) { if (firstNonSpace == blockText.length()) {
......
...@@ -149,10 +149,12 @@ int TabSettings::trailingWhitespaces(const QString &text) const ...@@ -149,10 +149,12 @@ int TabSettings::trailingWhitespaces(const QString &text) const
return i; return i;
} }
bool TabSettings::isIndentationClean(const QString &text) const bool TabSettings::isIndentationClean(const QTextBlock &block) const
{ {
int i = 0; int i = 0;
int spaceCount = 0; int spaceCount = 0;
QString text = block.text();
bool spacesForTabs = guessSpacesForTabs(block);
while (i < text.size()) { while (i < text.size()) {
QChar c = text.at(i); QChar c = text.at(i);
if (!c.isSpace()) if (!c.isSpace())
...@@ -160,10 +162,10 @@ bool TabSettings::isIndentationClean(const QString &text) const ...@@ -160,10 +162,10 @@ bool TabSettings::isIndentationClean(const QString &text) const
if (c == QLatin1Char(' ')) { if (c == QLatin1Char(' ')) {
++spaceCount; ++spaceCount;
if (!m_spacesForTabs && spaceCount == m_tabSize) if (!spacesForTabs && spaceCount == m_tabSize)
return false; return false;
} else if (c == QLatin1Char('\t')) { } else if (c == QLatin1Char('\t')) {
if (m_spacesForTabs || spaceCount != m_indentSize) if (spacesForTabs || spaceCount != m_indentSize)
return false; return false;
spaceCount = 0; spaceCount = 0;
} }
......
...@@ -72,7 +72,7 @@ struct TEXTEDITOR_EXPORT TabSettings ...@@ -72,7 +72,7 @@ struct TEXTEDITOR_EXPORT TabSettings
void reindentLine(QTextBlock block, int delta) const; void reindentLine(QTextBlock block, int delta) const;
int trailingWhitespaces(const QString &text) 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 tabShouldIndent(const QTextDocument *document, QTextCursor cursor, int *suggestedPosition = 0) const;
bool guessSpacesForTabs(const QTextBlock& block) const; bool guessSpacesForTabs(const QTextBlock& block) const;
......
Markdown is supported
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