diff --git a/src/plugins/languageclient/languageclientinterface.cpp b/src/plugins/languageclient/languageclientinterface.cpp index c20fa7c121a..b7e4a9ebb79 100644 --- a/src/plugins/languageclient/languageclientinterface.cpp +++ b/src/plugins/languageclient/languageclientinterface.cpp @@ -99,10 +99,6 @@ void BaseClientInterface::parseCurrentMessage() m_currentMessage = BaseMessage(); } -StdIOClientInterface::StdIOClientInterface() - : m_env(Utils::Environment::systemEnvironment()) -{} - StdIOClientInterface::~StdIOClientInterface() { delete m_process; @@ -128,7 +124,8 @@ void StdIOClientInterface::startImpl() }); m_process->setCommand(m_cmd); m_process->setWorkingDirectory(m_workingDirectory); - m_process->setEnvironment(m_env); + if (m_env.isValid()) + m_process->setEnvironment(m_env); m_process->start(); } diff --git a/src/plugins/languageclient/languageclientinterface.h b/src/plugins/languageclient/languageclientinterface.h index 0482c0e834b..4aa683f180d 100644 --- a/src/plugins/languageclient/languageclientinterface.h +++ b/src/plugins/languageclient/languageclientinterface.h @@ -72,7 +72,7 @@ class LANGUAGECLIENT_EXPORT StdIOClientInterface : public BaseClientInterface { Q_OBJECT public: - StdIOClientInterface(); + StdIOClientInterface() = default; ~StdIOClientInterface() override; StdIOClientInterface(const StdIOClientInterface &) = delete; diff --git a/src/plugins/python/pythonlanguageclient.cpp b/src/plugins/python/pythonlanguageclient.cpp index 2a4ea8c7d97..e621cd6283b 100644 --- a/src/plugins/python/pythonlanguageclient.cpp +++ b/src/plugins/python/pythonlanguageclient.cpp @@ -153,14 +153,22 @@ class PyLSInterface : public StdIOClientInterface public: PyLSInterface() : m_extraPythonPath("QtCreator-pyls-XXXXXX") - { - Environment env = Environment::systemEnvironment(); - env.appendOrSet("PYTHONPATH", - m_extraPythonPath.path().toString(), - OsSpecificAspects::pathListSeparator(env.osType())); - setEnvironment(env); - } + { } + TemporaryDirectory m_extraPythonPath; +protected: + void startImpl() override + { + if (!m_cmd.executable().needsDevice()) { + // todo check where to put this tempdir in remote setups + Environment env = Environment::systemEnvironment(); + env.appendOrSet("PYTHONPATH", + m_extraPythonPath.path().toString(), + OsSpecificAspects::pathListSeparator(env.osType())); + setEnvironment(env); + } + StdIOClientInterface::startImpl(); + } }; PyLSClient *clientForPython(const FilePath &python)