LSP: use QtcProcess::splitArgs for language server arguments

Also store the executable and arguments in the stdio client to get a
more accurate comparison of clients.

Change-Id: I84fdd4ea5f32b17198d3f08e7f5d494f7fbe67dc
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2018-09-10 15:15:37 +02:00
parent 08508522fe
commit 87381bbf90
6 changed files with 31 additions and 18 deletions

View File

@@ -40,6 +40,7 @@
#include <projectexplorer/project.h>
#include <projectexplorer/session.h>
#include <utils/mimetypes/mimedatabase.h>
#include <utils/qtcprocess.h>
#include <utils/synchronousprocess.h>
#include <QDebug>
@@ -671,7 +672,9 @@ void BaseClient::parseData(const QByteArray &data)
}
}
StdIOClient::StdIOClient(const QString &command, const QStringList &args)
StdIOClient::StdIOClient(const QString &executable, const QString &arguments)
: m_executable(executable)
, m_arguments(arguments)
{
connect(&m_process, &QProcess::readyReadStandardError,
this, &StdIOClient::readError);
@@ -680,8 +683,8 @@ StdIOClient::StdIOClient(const QString &command, const QStringList &args)
connect(&m_process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
this, &StdIOClient::onProcessFinished);
m_process.setArguments(args);
m_process.setProgram(command);
m_process.setArguments(Utils::QtcProcess::splitArgs(m_arguments));
m_process.setProgram(m_executable);
}
StdIOClient::~StdIOClient()
@@ -706,8 +709,8 @@ void StdIOClient::setWorkingDirectory(const QString &workingDirectory)
bool StdIOClient::matches(const LanguageClientSettings &setting)
{
return setting.m_executable == m_process.program()
&& setting.m_arguments == m_process.arguments();
return setting.m_executable == m_executable
&& setting.m_arguments == m_executable;
}
void StdIOClient::sendData(const QByteArray &data)