forked from qt-creator/qt-creator
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:
@@ -277,6 +277,13 @@ QList<BaseSettings *> LanguageClientManager::currentSettings()
|
|||||||
return managerInstance->m_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)
|
QVector<Client *> LanguageClientManager::clientForSetting(const BaseSettings *setting)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(managerInstance, return {});
|
QTC_ASSERT(managerInstance, return {});
|
||||||
|
@@ -75,6 +75,7 @@ public:
|
|||||||
|
|
||||||
static void applySettings();
|
static void applySettings();
|
||||||
static QList<BaseSettings *> currentSettings();
|
static QList<BaseSettings *> currentSettings();
|
||||||
|
static void registerClientSettings(BaseSettings *settings);
|
||||||
static QVector<Client *> clientForSetting(const BaseSettings *setting);
|
static QVector<Client *> clientForSetting(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);
|
||||||
|
@@ -100,6 +100,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; }
|
||||||
|
void insertSettings(BaseSettings *settings);
|
||||||
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;
|
||||||
@@ -146,6 +147,7 @@ public:
|
|||||||
void finish() override;
|
void finish() override;
|
||||||
|
|
||||||
QList<BaseSettings *> settings() const;
|
QList<BaseSettings *> settings() const;
|
||||||
|
void addSettings(BaseSettings *settings);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LanguageClientSettingsModel m_model;
|
LanguageClientSettingsModel m_model;
|
||||||
@@ -304,6 +306,11 @@ QList<BaseSettings *> LanguageClientSettingsPage::settings() const
|
|||||||
return m_model.settings();
|
return m_model.settings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LanguageClientSettingsPage::addSettings(BaseSettings *settings)
|
||||||
|
{
|
||||||
|
m_model.insertSettings(settings);
|
||||||
|
}
|
||||||
|
|
||||||
LanguageClientSettingsModel::~LanguageClientSettingsModel()
|
LanguageClientSettingsModel::~LanguageClientSettingsModel()
|
||||||
{
|
{
|
||||||
qDeleteAll(m_settings);
|
qDeleteAll(m_settings);
|
||||||
@@ -420,6 +427,14 @@ void LanguageClientSettingsModel::reset(const QList<BaseSettings *> &settings)
|
|||||||
endResetModel();
|
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
|
BaseSettings *LanguageClientSettingsModel::settingForIndex(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
if (!index.isValid() || index.row() >= m_settings.size())
|
if (!index.isValid() || index.row() >= m_settings.size())
|
||||||
@@ -528,6 +543,11 @@ QList<BaseSettings *> LanguageClientSettings::currentPageSettings()
|
|||||||
return settingsPage().settings();
|
return settingsPage().settings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LanguageClientSettings::addSettings(BaseSettings *settings)
|
||||||
|
{
|
||||||
|
settingsPage().addSettings(settings);
|
||||||
|
}
|
||||||
|
|
||||||
void LanguageClientSettings::toSettings(QSettings *settings,
|
void LanguageClientSettings::toSettings(QSettings *settings,
|
||||||
const QList<BaseSettings *> &languageClientSettings)
|
const QList<BaseSettings *> &languageClientSettings)
|
||||||
{
|
{
|
||||||
|
@@ -135,6 +135,7 @@ public:
|
|||||||
static void init();
|
static void init();
|
||||||
static QList<BaseSettings *> fromSettings(QSettings *settings);
|
static QList<BaseSettings *> fromSettings(QSettings *settings);
|
||||||
static QList<BaseSettings *> currentPageSettings();
|
static QList<BaseSettings *> currentPageSettings();
|
||||||
|
static void addSettings(BaseSettings *settings);
|
||||||
static void toSettings(QSettings *settings, const QList<BaseSettings *> &languageClientSettings);
|
static void toSettings(QSettings *settings, const QList<BaseSettings *> &languageClientSettings);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user