LanguageClient: correctly initialize editors of opened documents

Change-Id: I2dee2093c0bdb97a204e89bf0db526ae405b8e78
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2022-09-23 11:50:46 +02:00
parent b88ba1b7a6
commit 54feec93e3
3 changed files with 21 additions and 17 deletions

View File

@@ -845,21 +845,25 @@ void Client::activateDocument(TextEditor::TextDocument *document)
document->setQuickFixAssistProvider(d->m_clientProviders.quickFixAssistProvider); document->setQuickFixAssistProvider(d->m_clientProviders.quickFixAssistProvider);
} }
document->setFormatter(new LanguageClientFormatter(document, this)); document->setFormatter(new LanguageClientFormatter(document, this));
for (Core::IEditor *editor : Core::DocumentModel::editorsForDocument(document)) { for (Core::IEditor *editor : Core::DocumentModel::editorsForDocument(document))
updateEditorToolBar(editor); activateEditor(editor);
if (editor == Core::EditorManager::currentEditor()) }
TextEditor::IOutlineWidgetFactory::updateOutline();
if (auto textEditor = qobject_cast<TextEditor::BaseTextEditor *>(editor)) { void Client::activateEditor(Core::IEditor *editor)
TextEditor::TextEditorWidget *widget = textEditor->editorWidget(); {
widget->addHoverHandler(&d->m_hoverHandler); updateEditorToolBar(editor);
d->requestDocumentHighlights(widget); if (editor == Core::EditorManager::currentEditor())
uint optionalActions = widget->optionalActions(); TextEditor::IOutlineWidgetFactory::updateOutline();
if (symbolSupport().supportsFindUsages(document)) if (auto textEditor = qobject_cast<TextEditor::BaseTextEditor *>(editor)) {
optionalActions |= TextEditor::TextEditorActionHandler::FindUsage; TextEditor::TextEditorWidget *widget = textEditor->editorWidget();
if (symbolSupport().supportsRename(document)) widget->addHoverHandler(&d->m_hoverHandler);
optionalActions |= TextEditor::TextEditorActionHandler::RenameSymbol; d->requestDocumentHighlights(widget);
widget->setOptionalActions(optionalActions); uint optionalActions = widget->optionalActions();
} if (symbolSupport().supportsFindUsages(widget->textDocument()))
optionalActions |= TextEditor::TextEditorActionHandler::FindUsage;
if (symbolSupport().supportsRename(widget->textDocument()))
optionalActions |= TextEditor::TextEditorActionHandler::RenameSymbol;
widget->setOptionalActions(optionalActions);
} }
} }

View File

@@ -111,6 +111,7 @@ public:
virtual void openDocument(TextEditor::TextDocument *document); virtual void openDocument(TextEditor::TextDocument *document);
void closeDocument(TextEditor::TextDocument *document); void closeDocument(TextEditor::TextDocument *document);
void activateDocument(TextEditor::TextDocument *document); void activateDocument(TextEditor::TextDocument *document);
void activateEditor(Core::IEditor *editor);
void deactivateDocument(TextEditor::TextDocument *document); void deactivateDocument(TextEditor::TextDocument *document);
bool documentOpen(const TextEditor::TextDocument *document) const; bool documentOpen(const TextEditor::TextDocument *document) const;
TextEditor::TextDocument *documentForFilePath(const Utils::FilePath &file) const; TextEditor::TextDocument *documentForFilePath(const Utils::FilePath &file) const;

View File

@@ -471,10 +471,9 @@ void LanguageClientManager::editorOpened(Core::IEditor *editor)
if (client->reachable()) if (client->reachable())
client->cursorPositionChanged(widget); client->cursorPositionChanged(widget);
}); });
updateEditorToolBar(editor);
if (TextEditor::TextDocument *document = textEditor->textDocument()) { if (TextEditor::TextDocument *document = textEditor->textDocument()) {
if (Client *client = m_clientForDocument[document]) if (Client *client = m_clientForDocument[document])
widget->addHoverHandler(client->hoverHandler()); client->activateEditor(editor);
} }
} }
} }