diff options
Diffstat (limited to 'src/plugins/cppeditor/cppeditordocument.cpp')
-rw-r--r-- | src/plugins/cppeditor/cppeditordocument.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index 6da4ac43fc..85c10e8f0c 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -44,10 +44,12 @@ #include <projectexplorer/session.h> #include <texteditor/icodestylepreferencesfactory.h> +#include <texteditor/storagesettings.h> #include <texteditor/textdocumentlayout.h> #include <texteditor/texteditorsettings.h> #include <coreplugin/editormanager/editormanager.h> +#include <utils/executeondestruction.h> #include <utils/mimetypes/mimedatabase.h> #include <utils/qtcassert.h> #include <utils/runextensions.h> @@ -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<TextEditor::TextDocumentLayout *>(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); |