forked from qt-creator/qt-creator
LanguageClient: fix reassigning documents to restarted server
Make sure a client is still responsible for all assigned documents after it gets restarted because of setting changes. Change-Id: I3c7d8635e6699c137427864c1bf4eb183bfcf2f8 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Artem Sokolovskii <artem.sokolovskii@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -306,17 +306,25 @@ void LanguageClientManager::applySettings()
|
||||
break;
|
||||
}
|
||||
case BaseSettings::RequiresFile: {
|
||||
const QList<Core::IDocument *> &openedDocuments = Core::DocumentModel::openedDocuments();
|
||||
for (Core::IDocument *document : openedDocuments) {
|
||||
if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) {
|
||||
if (setting->m_languageFilter.isSupported(document))
|
||||
documents << textDocument;
|
||||
Client *client = nullptr;
|
||||
for (TextEditor::TextDocument *previousDocument : std::as_const(documents)) {
|
||||
if (setting->m_languageFilter.isSupported(previousDocument)) {
|
||||
if (!client)
|
||||
client = startClient(setting);
|
||||
openDocumentWithClient(previousDocument, client);
|
||||
}
|
||||
}
|
||||
if (!documents.isEmpty()) {
|
||||
Client *client = startClient(setting);
|
||||
for (TextEditor::TextDocument *document : std::as_const(documents))
|
||||
client->openDocument(document);
|
||||
const QList<Core::IDocument *> &openedDocuments = Core::DocumentModel::openedDocuments();
|
||||
for (Core::IDocument *document : openedDocuments) {
|
||||
if (documents.contains(document))
|
||||
continue; // already handled above
|
||||
if (auto textDocument = qobject_cast<TextEditor::TextDocument *>(document)) {
|
||||
if (setting->m_languageFilter.isSupported(document)) {
|
||||
if (!client)
|
||||
client = startClient(setting);
|
||||
client->openDocument(textDocument);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user