forked from qt-creator/qt-creator
Python: automatically disable outdated pyls settings
Change-Id: I301c6df3fdd9cf634a1abff20c6f24b9bc5fc23b Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -349,10 +349,10 @@ void LanguageClientManager::registerClientSettings(BaseSettings *settings)
|
|||||||
managerInstance->applySettings();
|
managerInstance->applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientManager::enableClientSettings(const QString &settingsId)
|
void LanguageClientManager::enableClientSettings(const QString &settingsId, bool enable)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(managerInstance, return);
|
QTC_ASSERT(managerInstance, return);
|
||||||
LanguageClientSettings::enableSettings(settingsId);
|
LanguageClientSettings::enableSettings(settingsId, enable);
|
||||||
managerInstance->applySettings();
|
managerInstance->applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -80,7 +80,7 @@ public:
|
|||||||
static void applySettings();
|
static void applySettings();
|
||||||
static QList<BaseSettings *> currentSettings();
|
static QList<BaseSettings *> currentSettings();
|
||||||
static void registerClientSettings(BaseSettings *settings);
|
static void registerClientSettings(BaseSettings *settings);
|
||||||
static void enableClientSettings(const QString &settingsId);
|
static void enableClientSettings(const QString &settingsId, bool enable = true);
|
||||||
static QList<Client *> clientsForSetting(const BaseSettings *setting);
|
static QList<Client *> clientsForSetting(const BaseSettings *setting);
|
||||||
static const BaseSettings *settingForClient(Client *setting);
|
static const BaseSettings *settingForClient(Client *setting);
|
||||||
static Client *clientForDocument(TextEditor::TextDocument *document);
|
static Client *clientForDocument(TextEditor::TextDocument *document);
|
||||||
|
@@ -114,7 +114,7 @@ public:
|
|||||||
void reset(const QList<BaseSettings *> &settings);
|
void reset(const QList<BaseSettings *> &settings);
|
||||||
QList<BaseSettings *> settings() const { return m_settings; }
|
QList<BaseSettings *> settings() const { return m_settings; }
|
||||||
int insertSettings(BaseSettings *settings);
|
int insertSettings(BaseSettings *settings);
|
||||||
void enableSetting(const QString &id);
|
void enableSetting(const QString &id, bool enable = true);
|
||||||
QList<BaseSettings *> removed() const { return m_removed; }
|
QList<BaseSettings *> removed() const { return m_removed; }
|
||||||
BaseSettings *settingForIndex(const QModelIndex &index) const;
|
BaseSettings *settingForIndex(const QModelIndex &index) const;
|
||||||
QModelIndex indexForSetting(BaseSettings *setting) const;
|
QModelIndex indexForSetting(BaseSettings *setting) const;
|
||||||
@@ -163,7 +163,7 @@ public:
|
|||||||
QList<BaseSettings *> settings() const;
|
QList<BaseSettings *> settings() const;
|
||||||
QList<BaseSettings *> changedSettings() const;
|
QList<BaseSettings *> changedSettings() const;
|
||||||
void addSettings(BaseSettings *settings);
|
void addSettings(BaseSettings *settings);
|
||||||
void enableSettings(const QString &id);
|
void enableSettings(const QString &id, bool enable = true);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LanguageClientSettingsModel m_model;
|
LanguageClientSettingsModel m_model;
|
||||||
@@ -368,9 +368,9 @@ void LanguageClientSettingsPage::addSettings(BaseSettings *settings)
|
|||||||
m_changedSettings << settings->m_id;
|
m_changedSettings << settings->m_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientSettingsPage::enableSettings(const QString &id)
|
void LanguageClientSettingsPage::enableSettings(const QString &id, bool enable)
|
||||||
{
|
{
|
||||||
m_model.enableSetting(id);
|
m_model.enableSetting(id, enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
LanguageClientSettingsModel::~LanguageClientSettingsModel()
|
LanguageClientSettingsModel::~LanguageClientSettingsModel()
|
||||||
@@ -498,12 +498,14 @@ int LanguageClientSettingsModel::insertSettings(BaseSettings *settings)
|
|||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientSettingsModel::enableSetting(const QString &id)
|
void LanguageClientSettingsModel::enableSetting(const QString &id, bool enable)
|
||||||
{
|
{
|
||||||
BaseSettings *setting = Utils::findOrDefault(m_settings, Utils::equal(&BaseSettings::m_id, id));
|
BaseSettings *setting = Utils::findOrDefault(m_settings, Utils::equal(&BaseSettings::m_id, id));
|
||||||
if (!setting)
|
if (!setting)
|
||||||
return;
|
return;
|
||||||
setting->m_enabled = true;
|
if (setting->m_enabled == enable)
|
||||||
|
return;
|
||||||
|
setting->m_enabled = enable;
|
||||||
const QModelIndex &index = indexForSetting(setting);
|
const QModelIndex &index = indexForSetting(setting);
|
||||||
if (index.isValid())
|
if (index.isValid())
|
||||||
emit dataChanged(index, index, {Qt::CheckStateRole});
|
emit dataChanged(index, index, {Qt::CheckStateRole});
|
||||||
@@ -687,9 +689,9 @@ void LanguageClientSettings::addSettings(BaseSettings *settings)
|
|||||||
settingsPage().addSettings(settings);
|
settingsPage().addSettings(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientSettings::enableSettings(const QString &id)
|
void LanguageClientSettings::enableSettings(const QString &id, bool enable)
|
||||||
{
|
{
|
||||||
settingsPage().enableSettings(id);
|
settingsPage().enableSettings(id, enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientSettings::toSettings(QSettings *settings,
|
void LanguageClientSettings::toSettings(QSettings *settings,
|
||||||
|
@@ -166,7 +166,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
static void registerClientType(const ClientType &type);
|
static void registerClientType(const ClientType &type);
|
||||||
static void addSettings(BaseSettings *settings);
|
static void addSettings(BaseSettings *settings);
|
||||||
static void enableSettings(const QString &id);
|
static void enableSettings(const QString &id, bool enable = true);
|
||||||
static void toSettings(QSettings *settings, const QList<BaseSettings *> &languageClientSettings);
|
static void toSettings(QSettings *settings, const QList<BaseSettings *> &languageClientSettings);
|
||||||
|
|
||||||
static bool outlineComboBoxIsSorted();
|
static bool outlineComboBoxIsSorted();
|
||||||
|
@@ -26,10 +26,14 @@
|
|||||||
#include "pythonsettings.h"
|
#include "pythonsettings.h"
|
||||||
|
|
||||||
#include "pythonconstants.h"
|
#include "pythonconstants.h"
|
||||||
|
#include "pythonplugin.h"
|
||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
#include <extensionsystem/pluginmanager.h>
|
||||||
|
#include <languageclient/languageclient_global.h>
|
||||||
#include <languageclient/languageclientsettings.h>
|
#include <languageclient/languageclientsettings.h>
|
||||||
|
#include <languageclient/languageclientmanager.h>
|
||||||
#include <texteditor/textdocument.h>
|
#include <texteditor/textdocument.h>
|
||||||
#include <texteditor/texteditor.h>
|
#include <texteditor/texteditor.h>
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
@@ -643,6 +647,33 @@ static QString defaultPylsConfiguration()
|
|||||||
return QString::fromUtf8(QJsonDocument(configuration).toJson());
|
return QString::fromUtf8(QJsonDocument(configuration).toJson());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void disableOutdatedPylsNow()
|
||||||
|
{
|
||||||
|
using namespace LanguageClient;
|
||||||
|
const QList<BaseSettings *>
|
||||||
|
settings = LanguageClientSettings::pageSettings();
|
||||||
|
for (const BaseSettings *setting : settings) {
|
||||||
|
if (setting->m_settingsTypeId != LanguageClient::Constants::LANGUAGECLIENT_STDIO_SETTINGS_ID)
|
||||||
|
continue;
|
||||||
|
auto stdioSetting = static_cast<const StdIOSettings *>(setting);
|
||||||
|
if (stdioSetting->arguments().startsWith("-m pyls")
|
||||||
|
&& stdioSetting->m_languageFilter.isSupported("foo.py", Constants::C_PY_MIMETYPE)) {
|
||||||
|
LanguageClientManager::enableClientSettings(stdioSetting->m_id, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void disableOutdatedPyls()
|
||||||
|
{
|
||||||
|
using namespace ExtensionSystem;
|
||||||
|
if (PluginManager::isInitializationDone()) {
|
||||||
|
disableOutdatedPylsNow();
|
||||||
|
} else {
|
||||||
|
QObject::connect(PluginManager::instance(), &PluginManager::initializationDone,
|
||||||
|
PythonPlugin::instance(), &disableOutdatedPylsNow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static SavedSettings fromSettings(QSettings *settings)
|
static SavedSettings fromSettings(QSettings *settings)
|
||||||
{
|
{
|
||||||
SavedSettings result;
|
SavedSettings result;
|
||||||
@@ -674,7 +705,9 @@ static SavedSettings fromSettings(QSettings *settings)
|
|||||||
result.defaultId = settings->value(defaultKey).toString();
|
result.defaultId = settings->value(defaultKey).toString();
|
||||||
|
|
||||||
QVariant pylsEnabled = settings->value(pylsEnabledKey);
|
QVariant pylsEnabled = settings->value(pylsEnabledKey);
|
||||||
if (!pylsEnabled.isNull())
|
if (pylsEnabled.isNull())
|
||||||
|
disableOutdatedPyls();
|
||||||
|
else
|
||||||
result.pylsEnabled = pylsEnabled.toBool();
|
result.pylsEnabled = pylsEnabled.toBool();
|
||||||
const QVariant pylsConfiguration = settings->value(pylsConfigurationKey);
|
const QVariant pylsConfiguration = settings->value(pylsConfigurationKey);
|
||||||
if (!pylsConfiguration.isNull())
|
if (!pylsConfiguration.isNull())
|
||||||
|
Reference in New Issue
Block a user