aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorDavid Schulz <[email protected]>2019-03-11 07:33:07 +0100
committerDavid Schulz <[email protected]>2019-03-12 13:07:11 +0000
commitbbbf7272726a89a6637a50660af549452d07c4e6 (patch)
treee5936580191df575c12d255324ded537856c53e0 /src/plugins
parent7f0589ef591f6ff08a86ec6bca02248dc40443ef (diff)
LanguageClient: fix restart check for stdio clients
Change-Id: I4acb61b48b7ac18423b2e106f1f9ea9b3f7ccb70 Reviewed-by: Christian Stenger <[email protected]>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/languageclient/client.cpp5
-rw-r--r--src/plugins/languageclient/client.h1
-rw-r--r--src/plugins/languageclient/languageclientinterface.cpp2
-rw-r--r--src/plugins/languageclient/languageclientinterface.h2
-rw-r--r--src/plugins/languageclient/languageclientsettings.cpp4
5 files changed, 11 insertions, 3 deletions
diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp
index dde08c6794c..244ca4c63aa 100644
--- a/src/plugins/languageclient/client.cpp
+++ b/src/plugins/languageclient/client.cpp
@@ -775,6 +775,11 @@ const DynamicCapabilities &Client::dynamicCapabilities() const
return m_dynamicCapabilities;
}
+const BaseClientInterface *Client::clientInterface() const
+{
+ return m_clientInterface.data();
+}
+
void Client::log(const ShowMessageParams &message,
Core::MessageManager::PrintToOutputPaneFlag flag)
{
diff --git a/src/plugins/languageclient/client.h b/src/plugins/languageclient/client.h
index 2d92424f42d..635512fa287 100644
--- a/src/plugins/languageclient/client.h
+++ b/src/plugins/languageclient/client.h
@@ -147,6 +147,7 @@ public:
const LanguageServerProtocol::ServerCapabilities &capabilities() const;
const DynamicCapabilities &dynamicCapabilities() const;
+ const BaseClientInterface *clientInterface() const;
signals:
void initialized(LanguageServerProtocol::ServerCapabilities capabilities);
diff --git a/src/plugins/languageclient/languageclientinterface.cpp b/src/plugins/languageclient/languageclientinterface.cpp
index b67db95dde1..05980617207 100644
--- a/src/plugins/languageclient/languageclientinterface.cpp
+++ b/src/plugins/languageclient/languageclientinterface.cpp
@@ -110,7 +110,7 @@ StdIOClientInterface::~StdIOClientInterface()
Utils::SynchronousProcess::stopProcess(m_process);
}
-bool StdIOClientInterface::needsRestart(const StdIOSettings *settings)
+bool StdIOClientInterface::needsRestart(const StdIOSettings *settings) const
{
return m_executable != settings->m_executable || m_arguments != settings->m_arguments;
}
diff --git a/src/plugins/languageclient/languageclientinterface.h b/src/plugins/languageclient/languageclientinterface.h
index 3dc2602d524..182965ab882 100644
--- a/src/plugins/languageclient/languageclientinterface.h
+++ b/src/plugins/languageclient/languageclientinterface.h
@@ -74,7 +74,7 @@ public:
StdIOClientInterface &operator=(const StdIOClientInterface &) = delete;
StdIOClientInterface &operator=(StdIOClientInterface &&) = delete;
- bool needsRestart(const StdIOSettings *settings);
+ bool needsRestart(const StdIOSettings *settings) const;
bool start() override;
diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp
index 17ea39f80ed..74ca22d5f2e 100644
--- a/src/plugins/languageclient/languageclientsettings.cpp
+++ b/src/plugins/languageclient/languageclientsettings.cpp
@@ -473,7 +473,9 @@ bool StdIOSettings::needsRestart() const
{
if (BaseSettings::needsRestart())
return true;
- if (auto stdIOInterface = qobject_cast<StdIOClientInterface *>(m_client))
+ if (m_client.isNull())
+ return false;
+ if (auto stdIOInterface = qobject_cast<const StdIOClientInterface *>(m_client->clientInterface()))
return stdIOInterface->needsRestart(this);
return false;
}