LanguageClient: select current client when opening inspector

Change-Id: I4bfd74e7e9a8c0f4b60ed034faac86c2fb9bb018
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-02-11 09:54:09 +01:00
parent f9502a3ba6
commit 032407a6fe
3 changed files with 22 additions and 8 deletions

View File

@@ -398,7 +398,10 @@ void LanguageClientManager::logBaseMessage(const LspLogMessage::MessageSender se
void LanguageClientManager::showInspector() void LanguageClientManager::showInspector()
{ {
QWidget *inspectorWidget = instance()->m_inspector.createWidget(); QString clientName;
if (Client *client = clientForDocument(TextEditor::TextDocument::currentTextDocument()))
clientName = client->name();
QWidget *inspectorWidget = instance()->m_inspector.createWidget(clientName);
inspectorWidget->setAttribute(Qt::WA_DeleteOnClose); inspectorWidget->setAttribute(Qt::WA_DeleteOnClose);
inspectorWidget->show(); inspectorWidget->show();
} }

View File

@@ -356,10 +356,11 @@ class LspInspectorWidget : public QDialog
public: public:
explicit LspInspectorWidget(LspInspector *inspector); explicit LspInspectorWidget(LspInspector *inspector);
void selectClient(const QString &clientName);
private: private:
void addMessage(const QString &clientName, const LspLogMessage &message); void addMessage(const QString &clientName, const LspLogMessage &message);
void updateCapabilities(const QString &clientName); void updateCapabilities(const QString &clientName);
void setCurrentClient(const QString &clientName); void currentClientChanged(const QString &clientName);
LspInspector *m_inspector = nullptr; LspInspector *m_inspector = nullptr;
LspLogWidget *m_log = nullptr; LspLogWidget *m_log = nullptr;
@@ -367,9 +368,11 @@ private:
QListWidget *m_clients = nullptr; QListWidget *m_clients = nullptr;
}; };
QWidget *LspInspector::createWidget() QWidget *LspInspector::createWidget(const QString &defaultClient)
{ {
return new LspInspectorWidget(this); auto *inspector = new LspInspectorWidget(this);
inspector->selectClient(defaultClient);
return inspector;
} }
void LspInspector::log(const LspLogMessage::MessageSender sender, void LspInspector::log(const LspLogMessage::MessageSender sender,
@@ -399,7 +402,7 @@ void LspInspector::updateCapabilities(const QString &clientName,
std::list<LspLogMessage> LspInspector::messages(const QString &clientName) const std::list<LspLogMessage> LspInspector::messages(const QString &clientName) const
{ {
return m_logs[clientName]; return m_logs.value(clientName);
} }
Capabilities LspInspector::capabilities(const QString &clientName) const Capabilities LspInspector::capabilities(const QString &clientName) const
@@ -449,7 +452,7 @@ LspInspectorWidget::LspInspectorWidget(LspInspector *inspector)
connect(m_clients, connect(m_clients,
&QListWidget::currentTextChanged, &QListWidget::currentTextChanged,
this, this,
&LspInspectorWidget::setCurrentClient); &LspInspectorWidget::currentClientChanged);
// save // save
connect(buttonBox, &QDialogButtonBox::accepted, m_log, &LspLogWidget::saveLog); connect(buttonBox, &QDialogButtonBox::accepted, m_log, &LspLogWidget::saveLog);
@@ -459,6 +462,14 @@ LspInspectorWidget::LspInspectorWidget(LspInspector *inspector)
resize(1024, 768); resize(1024, 768);
} }
void LspInspectorWidget::selectClient(const QString &clientName)
{
auto items = m_clients->findItems(clientName, Qt::MatchExactly);
if (items.isEmpty())
return;
m_clients->setCurrentItem(items.first());
}
void LspInspectorWidget::addMessage(const QString &clientName, const LspLogMessage &message) void LspInspectorWidget::addMessage(const QString &clientName, const LspLogMessage &message)
{ {
if (m_clients->findItems(clientName, Qt::MatchExactly).isEmpty()) if (m_clients->findItems(clientName, Qt::MatchExactly).isEmpty())
@@ -475,7 +486,7 @@ void LspInspectorWidget::updateCapabilities(const QString &clientName)
m_capabilities->setCapabilities(m_inspector->capabilities(clientName)); m_capabilities->setCapabilities(m_inspector->capabilities(clientName));
} }
void LspInspectorWidget::setCurrentClient(const QString &clientName) void LspInspectorWidget::currentClientChanged(const QString &clientName)
{ {
m_log->setMessages(m_inspector->messages(clientName)); m_log->setMessages(m_inspector->messages(clientName));
m_capabilities->setCapabilities(m_inspector->capabilities(clientName)); m_capabilities->setCapabilities(m_inspector->capabilities(clientName));

View File

@@ -56,7 +56,7 @@ class LspInspector : public QObject
public: public:
LspInspector() {} LspInspector() {}
QWidget *createWidget(); QWidget *createWidget(const QString &defaultClient = {});
void log(const LspLogMessage::MessageSender sender, void log(const LspLogMessage::MessageSender sender,