summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-09-18 14:50:42 +0200
committerDavid Schulz <david.schulz@qt.io>2019-09-23 09:51:41 +0000
commit57749e91e8e36bc6fd9fe8e472910c3619da42c1 (patch)
tree3715ac9a379e3996856c36a45fef19029a81d097
parent6948ceeea790579937b2b92148a52099a3dcf77f (diff)
downloadqt-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>
-rw-r--r--src/plugins/languageclient/languageclientmanager.cpp7
-rw-r--r--src/plugins/languageclient/languageclientmanager.h1
-rw-r--r--src/plugins/languageclient/languageclientsettings.cpp20
-rw-r--r--src/plugins/languageclient/languageclientsettings.h1
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);
};