forked from qt-creator/qt-creator
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:
committed by
Thorbjørn Lindeijer
parent
62d78bb062
commit
18952c98b9
@@ -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()) {
|
||||
|
@@ -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;
|
||||
|
@@ -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>
|
||||
|
@@ -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
|
||||
|
@@ -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); }
|
||||
|
Reference in New Issue
Block a user