summaryrefslogtreecommitdiff
path: root/src/plugins/clangcodemodel/clangprojectsettings.cpp
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2017-05-23 09:49:22 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2017-06-08 10:53:31 +0000
commit78db7d7ed24625cee373fb80b689bd3a7208d6e4 (patch)
tree4467a3873a0170cc728a4c8e0c45f0af35b14667 /src/plugins/clangcodemodel/clangprojectsettings.cpp
parent0784dd20fe3d4d31b89d8f1a7d4ad81ce09b6b67 (diff)
downloadqt-creator-78db7d7ed24625cee373fb80b689bd3a7208d6e4.tar.gz
Clang: turn off delayed template parsing
Fix templates highlight and completion on Windows Add UI to turn on/off delayed parsing (off by default) Task-number: QTCREATORBUG-17222 Change-Id: I0cd5e0bcfff2789cd938e4096829f777ff15957a Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangcodemodel/clangprojectsettings.cpp')
-rw-r--r--src/plugins/clangcodemodel/clangprojectsettings.cpp50
1 files changed, 41 insertions, 9 deletions
diff --git a/src/plugins/clangcodemodel/clangprojectsettings.cpp b/src/plugins/clangcodemodel/clangprojectsettings.cpp
index 5cb02d6909..2668ee3998 100644
--- a/src/plugins/clangcodemodel/clangprojectsettings.cpp
+++ b/src/plugins/clangcodemodel/clangprojectsettings.cpp
@@ -25,15 +25,23 @@
#include "clangprojectsettings.h"
+#include <utils/qtcassert.h>
+#include <utils/hostosinfo.h>
+
+#include <QDebug>
+
namespace ClangCodeModel {
namespace Internal {
-static QString useGlobalWarningConfigKey()
-{ return QStringLiteral("ClangCodeModel.UseGlobalWarningConfig"); }
+static QString useGlobalConfigKey()
+{ return QStringLiteral("ClangCodeModel.UseGlobalConfig"); }
static QString warningConfigIdKey()
{ return QStringLiteral("ClangCodeModel.WarningConfigId"); }
+static QString customCommandLineKey()
+{ return QLatin1String("ClangCodeModel.CustomCommandLineKey"); }
+
ClangProjectSettings::ClangProjectSettings(ProjectExplorer::Project *project)
: m_project(project)
{
@@ -55,31 +63,55 @@ void ClangProjectSettings::setWarningConfigId(const Core::Id &customConfigId)
m_warningConfigId = customConfigId;
}
-bool ClangProjectSettings::useGlobalWarningConfig() const
+bool ClangProjectSettings::useGlobalConfig() const
+{
+ return m_useGlobalConfig;
+}
+
+void ClangProjectSettings::setUseGlobalConfig(bool useGlobalConfig)
{
- return m_useGlobalWarningConfig;
+ m_useGlobalConfig = useGlobalConfig;
}
-void ClangProjectSettings::setUseGlobalWarningConfig(bool useGlobalWarningConfig)
+QStringList ClangProjectSettings::commandLineOptions() const
{
- m_useGlobalWarningConfig = useGlobalWarningConfig;
+ return m_useGlobalConfig ? globalCommandLineOptions()
+ : m_customCommandLineOptions;
+}
+
+void ClangProjectSettings::setCommandLineOptions(const QStringList &options)
+{
+ QTC_ASSERT(!m_useGlobalConfig, qDebug()
+ << "setCommandLineOptions was called while using global project config");
+ m_customCommandLineOptions = options;
}
void ClangProjectSettings::load()
{
- const QVariant useGlobalConfigVariant = m_project->namedSettings(useGlobalWarningConfigKey());
+ const QVariant useGlobalConfigVariant = m_project->namedSettings(useGlobalConfigKey());
const bool useGlobalConfig = useGlobalConfigVariant.isValid()
? useGlobalConfigVariant.toBool()
: true;
- setUseGlobalWarningConfig(useGlobalConfig);
+ setUseGlobalConfig(useGlobalConfig);
setWarningConfigId(Core::Id::fromSetting(m_project->namedSettings(warningConfigIdKey())));
+ m_customCommandLineOptions = m_project->namedSettings(customCommandLineKey()).toStringList();
+ if (m_customCommandLineOptions.empty())
+ m_customCommandLineOptions = globalCommandLineOptions();
}
void ClangProjectSettings::store()
{
- m_project->setNamedSettings(useGlobalWarningConfigKey(), useGlobalWarningConfig());
+ m_project->setNamedSettings(useGlobalConfigKey(), useGlobalConfig());
m_project->setNamedSettings(warningConfigIdKey(), warningConfigId().toSetting());
+ m_project->setNamedSettings(customCommandLineKey(), m_customCommandLineOptions);
+}
+
+QStringList ClangProjectSettings::globalCommandLineOptions()
+{
+ if (Utils::HostOsInfo::isWindowsHost())
+ return {QLatin1String{GlobalWindowsCmdOptions}};
+ return {};
}
} // namespace Internal