diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index 6da4ac43fc6..85c10e8f0cc 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -44,10 +44,12 @@ #include #include +#include #include #include #include +#include #include #include #include @@ -448,6 +450,8 @@ TextEditor::TabSettings CppEditorDocument::tabSettings() const bool CppEditorDocument::save(QString *errorString, const QString &fileName, bool autoSave) { + Utils::ExecuteOnDestruction resetSettingsOnScopeExit; + if (indenter()->formatOnSave() && !autoSave) { auto *layout = qobject_cast(document()->documentLayout()); const int documentRevision = layout->lastSaveRevision; @@ -479,6 +483,12 @@ bool CppEditorDocument::save(QString *errorString, const QString &fileName, bool indenter()->format(editedRanges); cursor.endEditBlock(); } + + TextEditor::StorageSettings settings = storageSettings(); + resetSettingsOnScopeExit.reset( + [this, defaultSettings = settings]() { setStorageSettings(defaultSettings); }); + settings.m_cleanWhitespace = false; + setStorageSettings(settings); } return TextEditor::TextDocument::save(errorString, fileName, autoSave);