summaryrefslogtreecommitdiff
path: root/src/plugins/texteditor/textdocument.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2021-09-03 17:14:54 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2021-09-07 10:05:28 +0000
commitd583dde17bb114395580609ee97a3032ec8ff727 (patch)
treecac8278745ad852e41cd9068ba9a64d6929b346c /src/plugins/texteditor/textdocument.cpp
parent847a03786c8ffb236e47b3597c03b7f55f55512f (diff)
downloadqt-creator-d583dde17bb114395580609ee97a3032ec8ff727.tar.gz
ClangCodeModel: Force clangd restart on external changes
Neither we nor clangd can afford to watch all source files, which means that after e.g. a branch switch we can easily end up in an inconsistent state. We alleviate this problem by restarting clangd if at least one open file was changed externally. Change-Id: I7e0d14835e3afbd7a64c3233614f2161282dddc0 Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/texteditor/textdocument.cpp')
-rw-r--r--src/plugins/texteditor/textdocument.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp
index a8f56f5b40..a705d1e90a 100644
--- a/src/plugins/texteditor/textdocument.cpp
+++ b/src/plugins/texteditor/textdocument.cpp
@@ -106,6 +106,7 @@ public:
QScopedPointer<Formatter> m_formatter;
int m_autoSaveRevision = -1;
+ bool m_silentReload = false;
TextMarks m_marksCache; // Marks not owned
Utils::Guard m_modificationChangedGuard;
@@ -426,6 +427,13 @@ QAction *TextDocument::createDiffAgainstCurrentFileAction(
return diffAction;
}
+#ifdef WITH_TESTS
+void TextDocument::setSilentReload()
+{
+ d->m_silentReload = true;
+}
+#endif
+
void TextDocument::triggerPendingUpdates()
{
if (d->m_fontSettingsNeedsApply)
@@ -707,6 +715,13 @@ void TextDocument::setFilePath(const Utils::FilePath &newName)
IDocument::setFilePath(newName.absoluteFilePath());
}
+IDocument::ReloadBehavior TextDocument::reloadBehavior(ChangeTrigger state, ChangeType type) const
+{
+ if (d->m_silentReload)
+ return IDocument::BehaviorSilent;
+ return BaseTextDocument::reloadBehavior(state, type);
+}
+
bool TextDocument::isModified() const
{
return d->m_document.isModified();