diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-05-23 09:49:22 +0200 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-06-08 10:53:31 +0000 |
commit | 78db7d7ed24625cee373fb80b689bd3a7208d6e4 (patch) | |
tree | 4467a3873a0170cc728a4c8e0c45f0af35b14667 /src/plugins/clangcodemodel/clangprojectsettings.cpp | |
parent | 0784dd20fe3d4d31b89d8f1a7d4ad81ce09b6b67 (diff) | |
download | qt-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.cpp | 50 |
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 |