diff options
author | David Schulz <david.schulz@qt.io> | 2019-09-18 14:50:42 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-09-23 09:51:41 +0000 |
commit | 57749e91e8e36bc6fd9fe8e472910c3619da42c1 (patch) | |
tree | 3715ac9a379e3996856c36a45fef19029a81d097 | |
parent | 6948ceeea790579937b2b92148a52099a3dcf77f (diff) | |
download | qt-creator-57749e91e8e36bc6fd9fe8e472910c3619da42c1.tar.gz |
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>
4 files changed, 29 insertions, 0 deletions
diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index 959f3150b9..c4af8fcd0e 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -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 {}); diff --git a/src/plugins/languageclient/languageclientmanager.h b/src/plugins/languageclient/languageclientmanager.h index 2b9542dc48..6aba7594b5 100644 --- a/src/plugins/languageclient/languageclientmanager.h +++ b/src/plugins/languageclient/languageclientmanager.h @@ -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); diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp index 5e8261b47c..9f30441765 100644 --- a/src/plugins/languageclient/languageclientsettings.cpp +++ b/src/plugins/languageclient/languageclientsettings.cpp @@ -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) { diff --git a/src/plugins/languageclient/languageclientsettings.h b/src/plugins/languageclient/languageclientsettings.h index 79657409cf..27437d1538 100644 --- a/src/plugins/languageclient/languageclientsettings.h +++ b/src/plugins/languageclient/languageclientsettings.h @@ -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); }; |