diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2021-09-03 17:14:54 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2021-09-07 10:05:28 +0000 |
commit | d583dde17bb114395580609ee97a3032ec8ff727 (patch) | |
tree | cac8278745ad852e41cd9068ba9a64d6929b346c /src/plugins/texteditor/textdocument.cpp | |
parent | 847a03786c8ffb236e47b3597c03b7f55f55512f (diff) | |
download | qt-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.cpp | 15 |
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(); |