diff options
author | David Schulz <[email protected]> | 2019-03-11 07:33:07 +0100 |
---|---|---|
committer | David Schulz <[email protected]> | 2019-03-12 13:07:11 +0000 |
commit | bbbf7272726a89a6637a50660af549452d07c4e6 (patch) | |
tree | e5936580191df575c12d255324ded537856c53e0 /src/plugins | |
parent | 7f0589ef591f6ff08a86ec6bca02248dc40443ef (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.cpp | 5 | ||||
-rw-r--r-- | src/plugins/languageclient/client.h | 1 | ||||
-rw-r--r-- | src/plugins/languageclient/languageclientinterface.cpp | 2 | ||||
-rw-r--r-- | src/plugins/languageclient/languageclientinterface.h | 2 | ||||
-rw-r--r-- | src/plugins/languageclient/languageclientsettings.cpp | 4 |
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; } |