forked from qt-creator/qt-creator
cleanWhitespace() checkes whether it has to change indentation or not. handle that.
This commit is contained in:
committed by
Thorbjørn Lindeijer
parent
fde766016a
commit
9822fb65df
@@ -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
|
|||||||
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
|
|||||||
|
|
||||||
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
|
|||||||
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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user