aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cppeditor/cppeditordocument.cpp
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2023-06-03 13:25:14 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2023-06-07 07:15:44 +0000
commit16fc0fcf1cd906897863c5f0bb2e609af0adf56f (patch)
tree0832761746d82f8255b8bd20d3f7579188f5b0a0 /src/plugins/cppeditor/cppeditordocument.cpp
parentbae8e28feedf87aae78d629bf24cbfd4cd3cf7cf (diff)
CppEditor: Reuse QScopeGuard instead of ExecuteOnDestruction
Change-Id: Ia60c8eab687599dbaa519daeab74e8799c33af95 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cppeditor/cppeditordocument.cpp')
-rw-r--r--src/plugins/cppeditor/cppeditordocument.cpp64
1 files changed, 31 insertions, 33 deletions
diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp
index 328b2c2346..a1d01575c5 100644
--- a/src/plugins/cppeditor/cppeditordocument.cpp
+++ b/src/plugins/cppeditor/cppeditordocument.cpp
@@ -23,7 +23,6 @@
#include <texteditor/textdocumentlayout.h>
#include <texteditor/texteditorsettings.h>
-#include <utils/executeondestruction.h>
#include <utils/infobar.h>
#include <utils/mimeutils.h>
#include <utils/minimizableinfobars.h>
@@ -31,6 +30,7 @@
#include <utils/utilsicons.h>
#include <QApplication>
+#include <QScopeGuard>
#include <QTextDocument>
const char NO_PROJECT_CONFIGURATION[] = "NoProject";
@@ -437,47 +437,45 @@ TextEditor::TabSettings CppEditorDocument::tabSettings() const
bool CppEditorDocument::save(QString *errorString, const FilePath &filePath, bool autoSave)
{
- ExecuteOnDestruction resetSettingsOnScopeExit;
+ if (!indenter()->formatOnSave() || autoSave)
+ return TextEditor::TextDocument::save(errorString, filePath, autoSave);
- if (indenter()->formatOnSave() && !autoSave) {
- auto *layout = qobject_cast<TextEditor::TextDocumentLayout *>(document()->documentLayout());
- const int documentRevision = layout->lastSaveRevision;
+ auto *layout = qobject_cast<TextEditor::TextDocumentLayout *>(document()->documentLayout());
+ const int documentRevision = layout->lastSaveRevision;
- TextEditor::RangesInLines editedRanges;
- TextEditor::RangeInLines lastRange{-1, -1};
- for (int i = 0; i < document()->blockCount(); ++i) {
- const QTextBlock block = document()->findBlockByNumber(i);
- if (block.revision() == documentRevision) {
- if (lastRange.startLine != -1)
- editedRanges.push_back(lastRange);
+ TextEditor::RangesInLines editedRanges;
+ TextEditor::RangeInLines lastRange{-1, -1};
+ for (int i = 0; i < document()->blockCount(); ++i) {
+ const QTextBlock block = document()->findBlockByNumber(i);
+ if (block.revision() == documentRevision) {
+ if (lastRange.startLine != -1)
+ editedRanges.push_back(lastRange);
- lastRange.startLine = lastRange.endLine = -1;
- continue;
- }
-
- // block.revision() != documentRevision
- if (lastRange.startLine == -1)
- lastRange.startLine = block.blockNumber() + 1;
- lastRange.endLine = block.blockNumber() + 1;
+ lastRange.startLine = lastRange.endLine = -1;
+ continue;
}
- if (lastRange.startLine != -1)
- editedRanges.push_back(lastRange);
+ // block.revision() != documentRevision
+ if (lastRange.startLine == -1)
+ lastRange.startLine = block.blockNumber() + 1;
+ lastRange.endLine = block.blockNumber() + 1;
+ }
- if (!editedRanges.empty()) {
- QTextCursor cursor(document());
- cursor.joinPreviousEditBlock();
- indenter()->format(editedRanges);
- cursor.endEditBlock();
- }
+ if (lastRange.startLine != -1)
+ editedRanges.push_back(lastRange);
- TextEditor::StorageSettings settings = storageSettings();
- resetSettingsOnScopeExit.reset(
- [this, defaultSettings = settings]() { setStorageSettings(defaultSettings); });
- settings.m_cleanWhitespace = false;
- setStorageSettings(settings);
+ if (!editedRanges.empty()) {
+ QTextCursor cursor(document());
+ cursor.joinPreviousEditBlock();
+ indenter()->format(editedRanges);
+ cursor.endEditBlock();
}
+ TextEditor::StorageSettings settings = storageSettings();
+ const QScopeGuard cleanup([this, settings] { setStorageSettings(settings); });
+ settings.m_cleanWhitespace = false;
+ setStorageSettings(settings);
+
return TextEditor::TextDocument::save(errorString, filePath, autoSave);
}