forked from qt-creator/qt-creator
LanguageClient: show unreachable servers in the lsp menu
Task-number: QTCREATORBUG-31125 Change-Id: I6526955fe4e3d65c6d83b88876eb47692d694955 Reviewed-by: Sami Shalayel <sami.shalayel@qt.io> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -275,13 +275,14 @@ LanguageClientManager *LanguageClientManager::instance()
|
||||
return managerInstance;
|
||||
}
|
||||
|
||||
QList<Client *> LanguageClientManager::clientsSupportingDocument(const TextEditor::TextDocument *doc)
|
||||
QList<Client *> LanguageClientManager::clientsSupportingDocument(
|
||||
const TextEditor::TextDocument *doc, bool onlyReachable)
|
||||
{
|
||||
QTC_ASSERT(managerInstance, return {});
|
||||
QTC_ASSERT(doc, return {};);
|
||||
return Utils::filtered(managerInstance->reachableClients(), [doc](Client *client) {
|
||||
return client->isSupportedDocument(doc);
|
||||
});
|
||||
return Utils::filtered(
|
||||
onlyReachable ? managerInstance->reachableClients() : managerInstance->m_clients,
|
||||
[doc](Client *client) { return client->isSupportedDocument(doc); });
|
||||
}
|
||||
|
||||
void LanguageClientManager::applySettings()
|
||||
|
@@ -48,7 +48,8 @@ public:
|
||||
|
||||
static LanguageClientManager *instance();
|
||||
|
||||
static QList<Client *> clientsSupportingDocument(const TextEditor::TextDocument *doc);
|
||||
static QList<Client *> clientsSupportingDocument(
|
||||
const TextEditor::TextDocument *doc, bool onlyReachable = true);
|
||||
|
||||
static void applySettings();
|
||||
static QList<BaseSettings *> currentSettings();
|
||||
|
@@ -256,7 +256,7 @@ void updateEditorToolBar(Core::IEditor *editor)
|
||||
auto menu = new QMenu;
|
||||
auto clientsGroup = new QActionGroup(menu);
|
||||
clientsGroup->setExclusive(true);
|
||||
for (auto client : LanguageClientManager::clientsSupportingDocument(document)) {
|
||||
for (auto client : LanguageClientManager::clientsSupportingDocument(document, false)) {
|
||||
auto action = clientsGroup->addAction(client->name());
|
||||
auto reopen = [action, client = QPointer(client), document] {
|
||||
if (!client)
|
||||
@@ -266,6 +266,10 @@ void updateEditorToolBar(Core::IEditor *editor)
|
||||
};
|
||||
action->setCheckable(true);
|
||||
action->setChecked(client == LanguageClientManager::clientForDocument(document));
|
||||
action->setEnabled(client->reachable());
|
||||
QObject::connect(client, &Client::stateChanged, action, [action, client] {
|
||||
action->setEnabled(client->reachable());
|
||||
});
|
||||
QObject::connect(action, &QAction::triggered, reopen);
|
||||
}
|
||||
menu->addActions(clientsGroup->actions());
|
||||
|
Reference in New Issue
Block a user