CppTools: Allow to check whether project code style exists

The calling code can anyways fallback to the global style
without extra help if no project style exists.

It is useful when you want to get the project style if it exists
and understand at the same time that it is not a global one.

Change-Id: I265de3f436f90623385427fc8a1abad09c8c3577
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
Ivan Donchevskii
2018-11-08 16:21:54 +01:00
parent 1787eef68f
commit 8dc566e902
4 changed files with 19 additions and 11 deletions

View File

@@ -118,7 +118,8 @@ static clang::format::FormatStyle constructStyle(bool isGlobal)
FormatStyle style = getLLVMStyle();
const CppCodeStyleSettings codeStyleSettings = isGlobal
? CppCodeStyleSettings::currentGlobalCodeStyle()
: CppCodeStyleSettings::currentProjectCodeStyle();
: CppCodeStyleSettings::currentProjectCodeStyle()
.value_or(CppCodeStyleSettings::currentGlobalCodeStyle());
const TabSettings tabSettings = isGlobal
? CppCodeStyleSettings::currentGlobalTabSettings()
: CppCodeStyleSettings::currentProjectTabSettings();
@@ -171,8 +172,7 @@ clang::format::FormatStyle currentGlobalStyle()
clang::format::FormatStyle currentStyle()
{
const bool isGlobal = (CppCodeStyleSettings::currentProjectCodeStyle()
== CppCodeStyleSettings::currentGlobalCodeStyle());
const bool isGlobal = !CppCodeStyleSettings::currentProjectCodeStyle().has_value();
return currentStyle(isGlobal);
}

View File

@@ -2988,7 +2988,10 @@ public:
m_baseName = QLatin1String("value");
// Getter Name
const CppCodeStyleSettings settings = CppCodeStyleSettings::currentProjectCodeStyle();
const Utils::optional<CppCodeStyleSettings> codeStyleSettings
= CppCodeStyleSettings::currentProjectCodeStyle();
const CppCodeStyleSettings settings
= codeStyleSettings.value_or(CppCodeStyleSettings::currentGlobalCodeStyle());
const bool hasValidBaseName = m_baseName != m_variableString;
const bool getPrefixIsAlreadyUsed = hasClassMemberWithGetPrefix(m_classSpecifier->symbol);
if (settings.preferGetterNameWithoutGetPrefix && hasValidBaseName && !getPrefixIsAlreadyUsed) {

View File

@@ -200,22 +200,23 @@ bool CppCodeStyleSettings::equals(const CppCodeStyleSettings &rhs) const
;
}
CppCodeStyleSettings CppCodeStyleSettings::currentProjectCodeStyle()
Utils::optional<CppCodeStyleSettings> CppCodeStyleSettings::currentProjectCodeStyle()
{
ProjectExplorer::Project *project = ProjectExplorer::ProjectTree::currentProject();
if (!project)
return currentGlobalCodeStyle();
return Utils::optional<CppCodeStyleSettings>();
ProjectExplorer::EditorConfiguration *editorConfiguration = project->editorConfiguration();
QTC_ASSERT(editorConfiguration, return currentGlobalCodeStyle());
QTC_ASSERT(editorConfiguration, return Utils::optional<CppCodeStyleSettings>());
TextEditor::ICodeStylePreferences *codeStylePreferences
= editorConfiguration->codeStyle(Constants::CPP_SETTINGS_ID);
QTC_ASSERT(codeStylePreferences, return currentGlobalCodeStyle());
QTC_ASSERT(codeStylePreferences, return Utils::optional<CppCodeStyleSettings>());
CppCodeStylePreferences *cppCodeStylePreferences
= dynamic_cast<CppCodeStylePreferences *>(codeStylePreferences);
QTC_ASSERT(cppCodeStylePreferences, return currentGlobalCodeStyle());
if (!cppCodeStylePreferences)
return Utils::optional<CppCodeStyleSettings>();
return cppCodeStylePreferences->currentCodeStyleSettings();
}
@@ -270,7 +271,9 @@ static void configureOverviewWithCodeStyleSettings(CPlusPlus::Overview &overview
CPlusPlus::Overview CppCodeStyleSettings::currentProjectCodeStyleOverview()
{
CPlusPlus::Overview overview;
configureOverviewWithCodeStyleSettings(overview, currentProjectCodeStyle());
const Utils::optional<CppCodeStyleSettings> codeStyleSettings = currentProjectCodeStyle();
configureOverviewWithCodeStyleSettings(overview,
codeStyleSettings.value_or(currentGlobalCodeStyle()));
return overview;
}

View File

@@ -27,6 +27,8 @@
#include "cpptools_global.h"
#include <utils/optional.h>
#include <QVariantMap>
QT_BEGIN_NAMESPACE
@@ -93,7 +95,7 @@ public:
bool operator==(const CppCodeStyleSettings &s) const { return equals(s); }
bool operator!=(const CppCodeStyleSettings &s) const { return !equals(s); }
static CppCodeStyleSettings currentProjectCodeStyle();
static Utils::optional<CppCodeStyleSettings> currentProjectCodeStyle();
static CppCodeStyleSettings currentGlobalCodeStyle();
static TextEditor::TabSettings currentProjectTabSettings();
static TextEditor::TabSettings currentGlobalTabSettings();