From d8f119c8a222188556bf63e7adbef24c9ca3fe7f Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Tue, 10 Nov 2015 16:54:53 +0100 Subject: Clang: Allow to provide extra command line options This can be used to experiment with clang options that e.g. affect diagnostics. Changes take effect on editor re-open. Change-Id: Ie46d0ff085a3700a748dbcf4b94b93b0bf9c4642 Reviewed-by: Leena Miettinen Reviewed-by: Eike Ziller --- src/plugins/cpptools/cppcodemodelsettingspage.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/plugins/cpptools/cppcodemodelsettingspage.cpp') diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp index e59e0d1dbb..f3295e776b 100644 --- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp +++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp @@ -46,7 +46,11 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(QWidget *parent) { m_ui->setupUi(this); - m_ui->theGroupBox->setVisible(true); + m_ui->clangSettingsGroupBox->setVisible(true); + connect(m_ui->clangOptionsResetButton, &QPushButton::clicked, [this]() { + const QString options = m_settings->defaultExtraClangOptions().join(QLatin1Char('\n')); + m_ui->clangOptionsToAppendTextEdit->document()->setPlainText(options); + }); } CppCodeModelSettingsWidget::~CppCodeModelSettingsWidget() @@ -96,8 +100,11 @@ void CppCodeModelSettingsWidget::setupClangCodeModelWidgets() const isClangActive = isClangCodeModelActive(*m_settings.data()); m_ui->activateClangCodeModelPluginHint->setVisible(!isClangAvailable); - m_ui->useClangCheckBox->setEnabled(isClangAvailable); - m_ui->useClangCheckBox->setChecked(isClangActive); + m_ui->clangSettingsGroupBox->setEnabled(isClangAvailable); + m_ui->clangSettingsGroupBox->setChecked(isClangActive); + + const QString extraClangOptions = m_settings->extraClangOptions().join(QLatin1Char('\n')); + m_ui->clangOptionsToAppendTextEdit->document()->setPlainText(extraClangOptions); } bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const @@ -106,13 +113,18 @@ bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const // Until then, ensure that the settings are set uniformly for all the mime types // to avoid surprises. - const QString activeCodeModelId = m_ui->useClangCheckBox->isChecked() + const QString activeCodeModelId = m_ui->clangSettingsGroupBox->isChecked() ? QLatin1String("ClangCodeMode.ClangCodeMode") : QLatin1String("CppTools.BuiltinCodeModel"); foreach (const QString &mimeType, m_settings->supportedMimeTypes()) m_settings->setModelManagerSupportIdForMimeType(mimeType, activeCodeModelId); + const QString clangOptionsText = m_ui->clangOptionsToAppendTextEdit->document()->toPlainText(); + const QStringList extraClangOptions = clangOptionsText.split(QLatin1Char('\n'), + QString::SkipEmptyParts); + m_settings->setExtraClangOptions(extraClangOptions); + return true; } -- cgit v1.2.1