diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp index dca5a2c688b..3b7671d7abe 100644 --- a/src/plugins/projectexplorer/projectfilewizardextension.cpp +++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -580,13 +581,19 @@ void ProjectFileWizardExtension::applyCodeStyle(Core::GeneratedFile *file) const TextEditor::ICodeStylePreferences *codeStylePrefs = codeStylePreferences(baseProject, languageId); indenter->setCodeStylePreferences(codeStylePrefs); - QTextDocument doc(file->contents()); QTextCursor cursor(&doc); cursor.select(QTextCursor::Document); indenter->indent(&doc, cursor, QChar::Null, codeStylePrefs->currentTabSettings()); - file->setContents(doc.toPlainText()); delete indenter; + if (TextEditor::TextEditorSettings::instance()->storageSettings().m_cleanWhitespace) { + QTextBlock block = doc.firstBlock(); + while (block.isValid()) { + codeStylePrefs->currentTabSettings().removeTrailingWhitespace(cursor, block); + block = block.next(); + } + } + file->setContents(doc.toPlainText()); } QStringList ProjectFileWizardExtension::getProjectChoices() const diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp index 64fb4359302..0390a07493d 100644 --- a/src/plugins/texteditor/basetextdocument.cpp +++ b/src/plugins/texteditor/basetextdocument.cpp @@ -469,11 +469,7 @@ void BaseTextDocument::cleanWhitespace(QTextCursor &cursor, bool cleanIndentatio if (inEntireDocument || block.revision() != documentLayout->lastSaveRevision) { QString blockText = block.text(); - if (int trailing = d->m_tabSettings.trailingWhitespaces(blockText)) { - cursor.setPosition(block.position() + block.length() - 1); - cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, trailing); - cursor.removeSelectedText(); - } + d->m_tabSettings.removeTrailingWhitespace(cursor, block); if (cleanIndentation && !d->m_tabSettings.isIndentationClean(block)) { cursor.setPosition(block.position()); int firstNonSpace = d->m_tabSettings.firstNonSpace(blockText); diff --git a/src/plugins/texteditor/tabsettings.cpp b/src/plugins/texteditor/tabsettings.cpp index fbcce87e7a8..f8a2ec162a6 100644 --- a/src/plugins/texteditor/tabsettings.cpp +++ b/src/plugins/texteditor/tabsettings.cpp @@ -152,6 +152,15 @@ int TabSettings::trailingWhitespaces(const QString &text) const return i; } +void TabSettings::removeTrailingWhitespace(QTextCursor cursor, QTextBlock &block) const +{ + if (const int trailing = trailingWhitespaces(block.text())) { + cursor.setPosition(block.position() + block.length() - 1); + cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, trailing); + cursor.removeSelectedText(); + } +} + bool TabSettings::isIndentationClean(const QTextBlock &block) const { int i = 0; diff --git a/src/plugins/texteditor/tabsettings.h b/src/plugins/texteditor/tabsettings.h index 95071667df6..e28fd2f1f88 100644 --- a/src/plugins/texteditor/tabsettings.h +++ b/src/plugins/texteditor/tabsettings.h @@ -85,6 +85,7 @@ public: void reindentLine(QTextBlock block, int delta) const; int trailingWhitespaces(const QString &text) const; + void removeTrailingWhitespace(QTextCursor cursor, QTextBlock &block) const; bool isIndentationClean(const QTextBlock &block) const; bool guessSpacesForTabs(const QTextBlock &block) const;