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;
|
||||
}
|
||||
|
||||
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 {});
|
||||
|
@@ -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);
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -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);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user