1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#include "LSPPythonDetector.hpp"
#include "asyncprocess.h"
#include "clPythonLocator.hpp"
#include "globals.h"
#include "wx/filename.h"
#include <cstdlib>
LSPPythonDetector::LSPPythonDetector()
: LSPDetector("python")
{
}
LSPPythonDetector::~LSPPythonDetector() {}
bool LSPPythonDetector::DoLocate()
{
clPythonLocator locator;
if(!locator.Locate()) { return false; }
const wxString& pythonExe = locator.GetPython();
const wxString& pip = locator.GetPip();
// Check if python-language-server is installed
wxFileName fnPython(pip);
wxString command;
command << pip;
::WrapWithQuotes(command);
command << " list";
IProcess::Ptr_t proc(::CreateSyncProcess(command, IProcessCreateDefault, fnPython.GetPath()));
if(!proc) { return false; }
wxString output;
proc->WaitForTerminate(output);
if(!output.Contains("python-language-server")) { return false; }
// We have it installed
command.Clear();
command << pythonExe;
::WrapWithQuotes(command);
command << " -m pyls";
SetCommand(command);
// Add support for the languages
GetLangugaes().Add("python");
SetConnectionString("stdio");
SetPriority(50);
return true;
}
|