forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user