LanguageClient: allow adding settings via the manager

This adds the possibility to configure language servers
from other plugins.

Change-Id: I33c7d637ddd73dcfc0d02c366b8b9749ac1c2b98
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-09-18 14:50:42 +02:00
parent 6948ceeea7
commit 57749e91e8
4 changed files with 29 additions and 0 deletions

View File

@@ -277,6 +277,13 @@ QList<BaseSettings *> LanguageClientManager::currentSettings()
return managerInstance->m_currentSettings;
}
void LanguageClientManager::registerClientSettings(BaseSettings *settings)
{
QTC_ASSERT(managerInstance, return);
LanguageClientSettings::addSettings(settings);
managerInstance->applySettings();
}
QVector<Client *> LanguageClientManager::clientForSetting(const BaseSettings *setting)
{
QTC_ASSERT(managerInstance, return {});

View File

@@ -75,6 +75,7 @@ public:
static void applySettings();
static QList<BaseSettings *> currentSettings();
static void registerClientSettings(BaseSettings *settings);
static QVector<Client *> clientForSetting(const BaseSettings *setting);
static const BaseSettings *settingForClient(Client *setting);
static Client *clientForDocument(TextEditor::TextDocument *document);

View File

@@ -100,6 +100,7 @@ public:
void reset(const QList<BaseSettings *> &settings);
QList<BaseSettings *> settings() const { return m_settings; }
void insertSettings(BaseSettings *settings);
QList<BaseSettings *> removed() const { return m_removed; }
BaseSettings *settingForIndex(const QModelIndex &index) const;
QModelIndex indexForSetting(BaseSettings *setting) const;
@@ -146,6 +147,7 @@ public:
void finish() override;
QList<BaseSettings *> settings() const;
void addSettings(BaseSettings *settings);
private:
LanguageClientSettingsModel m_model;
@@ -304,6 +306,11 @@ QList<BaseSettings *> LanguageClientSettingsPage::settings() const
return m_model.settings();
}
void LanguageClientSettingsPage::addSettings(BaseSettings *settings)
{
m_model.insertSettings(settings);
}
LanguageClientSettingsModel::~LanguageClientSettingsModel()
{
qDeleteAll(m_settings);
@@ -420,6 +427,14 @@ void LanguageClientSettingsModel::reset(const QList<BaseSettings *> &settings)
endResetModel();
}
void LanguageClientSettingsModel::insertSettings(BaseSettings *settings)
{
int row = rowCount();
beginInsertRows(QModelIndex(), row, row);
m_settings.insert(row, settings);
endInsertRows();
}
BaseSettings *LanguageClientSettingsModel::settingForIndex(const QModelIndex &index) const
{
if (!index.isValid() || index.row() >= m_settings.size())
@@ -528,6 +543,11 @@ QList<BaseSettings *> LanguageClientSettings::currentPageSettings()
return settingsPage().settings();
}
void LanguageClientSettings::addSettings(BaseSettings *settings)
{
settingsPage().addSettings(settings);
}
void LanguageClientSettings::toSettings(QSettings *settings,
const QList<BaseSettings *> &languageClientSettings)
{

View File

@@ -135,6 +135,7 @@ public:
static void init();
static QList<BaseSettings *> fromSettings(QSettings *settings);
static QList<BaseSettings *> currentPageSettings();
static void addSettings(BaseSettings *settings);
static void toSettings(QSettings *settings, const QList<BaseSettings *> &languageClientSettings);
};