Add explicit option to clean indentation

It is desirable to have removal of trailing whitespace as a separate
option to "tab cleanup". Clean Whitespace option without Clean
Indentation option will now only remove trailing whitespace on file save
and on Clean Whitespace requests. Clean Indentation option is set to
true by default to maintain backward compatibility.

Signed-off-by: Adam Majer <adamm@zombino.com>
This commit is contained in:
Adam Majer
2009-01-26 13:14:28 +01:00
committed by Thorbjørn Lindeijer
parent 62d78bb062
commit 18952c98b9
5 changed files with 47 additions and 3 deletions

View File

@@ -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()) {

View File

@@ -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;

View File

@@ -214,6 +214,36 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>30</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="cleanIndentation">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Clean indentation</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="addFinalNewLine">
<property name="text">
@@ -338,6 +368,12 @@
</hint>
</hints>
</connection>
<connection>
<sender>cleanWhitespace</sender>
<signal>toggled(bool)</signal>
<receiver>cleanIndentation</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>showWrapColumn</sender>
<signal>toggled(bool)</signal>

View File

@@ -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

View File

@@ -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); }