diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index eb6069df6d9..d782ed5ace2 100644
--- a/src/plugins/texteditor/basetextdocument.cpp
+++ b/src/plugins/texteditor/basetextdocument.cpp
@@ -330,7 +330,7 @@ void BaseTextDocument::cleanWhitespace(QTextCursor& cursor, bool inEntireDocumen
cursor.movePosition(QTextCursor::PreviousCharacter, QTextCursor::KeepAnchor, trailing);
cursor.removeSelectedText();
}
- if (!m_tabSettings.isIndentationClean(blockText)) {
+ if (m_storageSettings.m_cleanIndentation && !m_tabSettings.isIndentationClean(blockText)) {
cursor.setPosition(block.position());
int firstNonSpace = m_tabSettings.firstNonSpace(blockText);
if (firstNonSpace == blockText.length()) {
diff --git a/src/plugins/texteditor/generalsettingspage.cpp b/src/plugins/texteditor/generalsettingspage.cpp
index 7482080ab95..28400d10ebf 100644
--- a/src/plugins/texteditor/generalsettingspage.cpp
+++ b/src/plugins/texteditor/generalsettingspage.cpp
@@ -162,6 +162,7 @@ void GeneralSettingsPage::settingsFromUI(TabSettings &rc,
storageSettings.m_cleanWhitespace = m_d->m_page.cleanWhitespace->isChecked();
storageSettings.m_inEntireDocument = m_d->m_page.inEntireDocument->isChecked();
+ storageSettings.m_cleanIndentation = m_d->m_page.cleanIndentation->isChecked();
storageSettings.m_addFinalNewLine = m_d->m_page.addFinalNewLine->isChecked();
displaySettings.m_displayLineNumbers = m_d->m_page.displayLineNumbers->isChecked();
@@ -187,6 +188,7 @@ void GeneralSettingsPage::settingsToUI()
StorageSettings storageSettings = m_d->m_storageSettings;
m_d->m_page.cleanWhitespace->setChecked(storageSettings.m_cleanWhitespace);
m_d->m_page.inEntireDocument->setChecked(storageSettings.m_inEntireDocument);
+ m_d->m_page.cleanIndentation->setChecked(storageSettings.m_cleanIndentation);
m_d->m_page.addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine);
DisplaySettings displaySettings = m_d->m_displaySettings;
diff --git a/src/plugins/texteditor/generalsettingspage.ui b/src/plugins/texteditor/generalsettingspage.ui
index 58b6bdbc0aa..301ee8bdf55 100644
--- a/src/plugins/texteditor/generalsettingspage.ui
+++ b/src/plugins/texteditor/generalsettingspage.ui
@@ -214,6 +214,36 @@
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 30
+ 20
+
+
+
+
+ -
+
+
+ false
+
+
+ Clean indentation
+
+
+
+
+
-
@@ -338,6 +368,12 @@
+
+ cleanWhitespace
+ toggled(bool)
+ cleanIndentation
+ setEnabled(bool)
+
showWrapColumn
toggled(bool)
diff --git a/src/plugins/texteditor/storagesettings.cpp b/src/plugins/texteditor/storagesettings.cpp
index b92b4973450..c14a28ae6a4 100644
--- a/src/plugins/texteditor/storagesettings.cpp
+++ b/src/plugins/texteditor/storagesettings.cpp
@@ -41,12 +41,14 @@ namespace TextEditor {
static const char * const cleanWhitespaceKey = "cleanWhitespace";
static const char * const inEntireDocumentKey = "inEntireDocument";
static const char * const addFinalNewLineKey = "addFinalNewLine";
+static const char * const cleanIndentationKey = "cleanIndentation";
static const char * const groupPostfix = "StorageSettings";
StorageSettings::StorageSettings()
: m_cleanWhitespace(true),
m_inEntireDocument(false),
- m_addFinalNewLine(true)
+ m_addFinalNewLine(true),
+ m_cleanIndentation(true)
{
}
@@ -59,6 +61,7 @@ void StorageSettings::toSettings(const QString &category, QSettings *s) const
s->setValue(QLatin1String(cleanWhitespaceKey), m_cleanWhitespace);
s->setValue(QLatin1String(inEntireDocumentKey), m_inEntireDocument);
s->setValue(QLatin1String(addFinalNewLineKey), m_addFinalNewLine);
+ s->setValue(QLatin1String(cleanIndentationKey), m_cleanIndentation);
s->endGroup();
}
@@ -71,13 +74,15 @@ void StorageSettings::fromSettings(const QString &category, const QSettings *s)
m_cleanWhitespace = s->value(group + QLatin1String(cleanWhitespaceKey), m_cleanWhitespace).toBool();
m_inEntireDocument = s->value(group + QLatin1String(inEntireDocumentKey), m_inEntireDocument).toBool();
m_addFinalNewLine = s->value(group + QLatin1String(addFinalNewLineKey), m_addFinalNewLine).toBool();
+ m_cleanIndentation = s->value(group + QLatin1String(cleanIndentationKey), m_cleanIndentation).toBool();
}
bool StorageSettings::equals(const StorageSettings &ts) const
{
return m_addFinalNewLine == ts.m_addFinalNewLine
&& m_cleanWhitespace == ts.m_cleanWhitespace
- && m_inEntireDocument == ts.m_inEntireDocument;
+ && m_inEntireDocument == ts.m_inEntireDocument
+ && m_cleanIndentation == ts.m_cleanIndentation;
}
} // namespace TextEditor
diff --git a/src/plugins/texteditor/storagesettings.h b/src/plugins/texteditor/storagesettings.h
index d90b462d321..4fca30b284d 100644
--- a/src/plugins/texteditor/storagesettings.h
+++ b/src/plugins/texteditor/storagesettings.h
@@ -54,6 +54,7 @@ struct TEXTEDITOR_EXPORT StorageSettings
bool m_cleanWhitespace;
bool m_inEntireDocument;
bool m_addFinalNewLine;
+ bool m_cleanIndentation;
};
inline bool operator==(const StorageSettings &t1, const StorageSettings &t2) { return t1.equals(t2); }