forked from qt-creator/qt-creator
CppEditor: Refactor CppCodeModelSettings
Preparation for per-project settings. Change-Id: I78ecf0cde6150e40353c4aea6a98717d119f05c7 Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -35,7 +35,7 @@ BaseEditorDocumentProcessor::~BaseEditorDocumentProcessor() = default;
|
|||||||
|
|
||||||
void BaseEditorDocumentProcessor::run(bool projectsUpdated)
|
void BaseEditorDocumentProcessor::run(bool projectsUpdated)
|
||||||
{
|
{
|
||||||
const Utils::Language languagePreference = codeModelSettings()->interpretAmbigiousHeadersAsCHeaders()
|
const Utils::Language languagePreference = codeModelSettings()->interpretAmbigiousHeadersAsC()
|
||||||
? Utils::Language::C
|
? Utils::Language::C
|
||||||
: Utils::Language::Cxx;
|
: Utils::Language::Cxx;
|
||||||
|
|
||||||
|
|||||||
@@ -90,11 +90,7 @@ void ClangDiagnosticConfigsSelectionWidget::onButtonClicked()
|
|||||||
connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
|
connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
|
||||||
connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
|
connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
|
||||||
|
|
||||||
const bool previousEnableLowerClazyLevels = codeModelSettings()->enableLowerClazyLevels();
|
|
||||||
if (dialog.exec() == QDialog::Accepted) {
|
if (dialog.exec() == QDialog::Accepted) {
|
||||||
if (previousEnableLowerClazyLevels != codeModelSettings()->enableLowerClazyLevels())
|
|
||||||
codeModelSettings()->toSettings(Core::ICore::settings());
|
|
||||||
|
|
||||||
m_diagnosticConfigsModel = ClangDiagnosticConfigsModel(widget->configs());
|
m_diagnosticConfigsModel = ClangDiagnosticConfigsModel(widget->configs());
|
||||||
m_currentConfigId = widget->currentConfig().id();
|
m_currentConfigId = widget->currentConfig().id();
|
||||||
m_button->setText(widget->currentConfig().displayName());
|
m_button->setText(widget->currentConfig().displayName());
|
||||||
|
|||||||
@@ -71,135 +71,98 @@ static FilePath fallbackClangdFilePath()
|
|||||||
return Environment::systemEnvironment().searchInPath("clangd");
|
return Environment::systemEnvironment().searchInPath("clangd");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool operator==(const CppEditor::CppCodeModelSettings::Data &s1,
|
||||||
|
const CppEditor::CppCodeModelSettings::Data &s2)
|
||||||
|
{
|
||||||
|
return s1.pchUsage == s2.pchUsage
|
||||||
|
&& s1.interpretAmbigiousHeadersAsC == s2.interpretAmbigiousHeadersAsC
|
||||||
|
&& s1.skipIndexingBigFiles == s2.skipIndexingBigFiles
|
||||||
|
&& s1.useBuiltinPreprocessor == s2.useBuiltinPreprocessor
|
||||||
|
&& s1.indexerFileSizeLimitInMb == s2.indexerFileSizeLimitInMb
|
||||||
|
&& s1.enableLowerClazyLevels == s2.enableLowerClazyLevels
|
||||||
|
&& s1.categorizeFindReferences == s2.categorizeFindReferences
|
||||||
|
&& s1.ignoreFiles == s2.ignoreFiles && s1.ignorePattern == s2.ignorePattern;
|
||||||
|
}
|
||||||
|
|
||||||
|
Store CppCodeModelSettings::Data::toMap() const
|
||||||
|
{
|
||||||
|
const CppCodeModelSettings::Data def;
|
||||||
|
Store store;
|
||||||
|
store.insertValueWithDefault(enableLowerClazyLevelsKey(),
|
||||||
|
enableLowerClazyLevels,
|
||||||
|
def.enableLowerClazyLevels);
|
||||||
|
store.insertValueWithDefault(pchUsageKey(), pchUsage, def.pchUsage);
|
||||||
|
store.insertValueWithDefault(interpretAmbiguousHeadersAsCHeadersKey(),
|
||||||
|
interpretAmbigiousHeadersAsC,
|
||||||
|
def.interpretAmbigiousHeadersAsC);
|
||||||
|
store.insertValueWithDefault(skipIndexingBigFilesKey(),
|
||||||
|
skipIndexingBigFiles,
|
||||||
|
def.skipIndexingBigFiles);
|
||||||
|
store.insertValueWithDefault(ignoreFilesKey(), ignoreFiles, def.ignoreFiles);
|
||||||
|
store.insertValueWithDefault(ignorePatternKey(), ignorePattern, def.ignorePattern);
|
||||||
|
store.insertValueWithDefault(useBuiltinPreprocessorKey(),
|
||||||
|
useBuiltinPreprocessor,
|
||||||
|
def.useBuiltinPreprocessor);
|
||||||
|
store.insertValueWithDefault(indexerFileSizeLimitKey(),
|
||||||
|
indexerFileSizeLimitInMb,
|
||||||
|
def.indexerFileSizeLimitInMb);
|
||||||
|
return store;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CppCodeModelSettings::Data::fromMap(const Utils::Store &store)
|
||||||
|
{
|
||||||
|
const CppCodeModelSettings::Data def;
|
||||||
|
enableLowerClazyLevels
|
||||||
|
= store.value(enableLowerClazyLevelsKey(), def.enableLowerClazyLevels).toBool();
|
||||||
|
pchUsage = static_cast<PCHUsage>(store.value(pchUsageKey(), def.pchUsage).toInt());
|
||||||
|
interpretAmbigiousHeadersAsC = store
|
||||||
|
.value(interpretAmbiguousHeadersAsCHeadersKey(),
|
||||||
|
def.interpretAmbigiousHeadersAsC)
|
||||||
|
.toBool();
|
||||||
|
skipIndexingBigFiles = store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles).toBool();
|
||||||
|
ignoreFiles = store.value(ignoreFilesKey(), def.ignoreFiles).toBool();
|
||||||
|
ignorePattern = store.value(ignorePatternKey(), def.ignorePattern).toString();
|
||||||
|
useBuiltinPreprocessor
|
||||||
|
= store.value(useBuiltinPreprocessorKey(), def.useBuiltinPreprocessor).toBool();
|
||||||
|
indexerFileSizeLimitInMb
|
||||||
|
= store.value(indexerFileSizeLimitKey(), def.indexerFileSizeLimitInMb).toInt();
|
||||||
|
}
|
||||||
|
|
||||||
void CppCodeModelSettings::fromSettings(QtcSettings *s)
|
void CppCodeModelSettings::fromSettings(QtcSettings *s)
|
||||||
{
|
{
|
||||||
fromMap(storeFromSettings(Constants::CPPEDITOR_SETTINGSGROUP, s));
|
m_data.fromMap(storeFromSettings(Constants::CPPEDITOR_SETTINGSGROUP, s));
|
||||||
emit changed();
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppCodeModelSettings::toSettings(QtcSettings *s)
|
void CppCodeModelSettings::toSettings(QtcSettings *s)
|
||||||
{
|
{
|
||||||
storeToSettings(Constants::CPPEDITOR_SETTINGSGROUP, s, toMap());
|
storeToSettings(Constants::CPPEDITOR_SETTINGSGROUP, s, m_data.toMap());
|
||||||
emit changed(); // TODO: Why?
|
emit changed(); // TODO: Why?
|
||||||
}
|
}
|
||||||
|
|
||||||
Store CppCodeModelSettings::toMap() const
|
void CppCodeModelSettings::setData(const Data &data)
|
||||||
{
|
{
|
||||||
const CppCodeModelSettings def;
|
if (m_data != data) {
|
||||||
Store store;
|
m_data = data;
|
||||||
store.insertValueWithDefault(enableLowerClazyLevelsKey(),
|
toSettings(Core::ICore::settings());
|
||||||
enableLowerClazyLevels(),
|
emit changed();
|
||||||
def.enableLowerClazyLevels());
|
}
|
||||||
store.insertValueWithDefault(pchUsageKey(), pchUsage(), def.pchUsage());
|
|
||||||
store.insertValueWithDefault(interpretAmbiguousHeadersAsCHeadersKey(),
|
|
||||||
interpretAmbigiousHeadersAsCHeaders(),
|
|
||||||
def.interpretAmbigiousHeadersAsCHeaders());
|
|
||||||
store.insertValueWithDefault(skipIndexingBigFilesKey(),
|
|
||||||
skipIndexingBigFiles(),
|
|
||||||
def.skipIndexingBigFiles());
|
|
||||||
store.insertValueWithDefault(ignoreFilesKey(), ignoreFiles(), def.ignoreFiles());
|
|
||||||
store.insertValueWithDefault(ignorePatternKey(), ignorePattern(), def.ignorePattern());
|
|
||||||
store.insertValueWithDefault(useBuiltinPreprocessorKey(),
|
|
||||||
useBuiltinPreprocessor(),
|
|
||||||
def.useBuiltinPreprocessor());
|
|
||||||
store.insertValueWithDefault(indexerFileSizeLimitKey(),
|
|
||||||
indexerFileSizeLimitInMb(),
|
|
||||||
def.indexerFileSizeLimitInMb());
|
|
||||||
return store;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppCodeModelSettings::fromMap(const Utils::Store &store)
|
void CppCodeModelSettings::setEnableLowerClazyLevels(bool enable)
|
||||||
{
|
{
|
||||||
const CppCodeModelSettings def;
|
Data d = data();
|
||||||
setEnableLowerClazyLevels(
|
d.enableLowerClazyLevels = enable;
|
||||||
store.value(enableLowerClazyLevelsKey(), def.enableLowerClazyLevels()).toBool());
|
setData(d);
|
||||||
setPCHUsage(static_cast<PCHUsage>(store.value(pchUsageKey(), def.pchUsage()).toInt()));
|
|
||||||
setInterpretAmbigiousHeadersAsCHeaders(store
|
|
||||||
.value(interpretAmbiguousHeadersAsCHeadersKey(),
|
|
||||||
def.interpretAmbigiousHeadersAsCHeaders())
|
|
||||||
.toBool());
|
|
||||||
setSkipIndexingBigFiles(
|
|
||||||
store.value(skipIndexingBigFilesKey(), def.skipIndexingBigFiles()).toBool());
|
|
||||||
setIgnoreFiles(store.value(ignoreFilesKey(), def.ignoreFiles()).toBool());
|
|
||||||
setIgnorePattern(store.value(ignorePatternKey(), def.ignorePattern()).toString());
|
|
||||||
setUseBuiltinPreprocessor(
|
|
||||||
store.value(useBuiltinPreprocessorKey(), def.useBuiltinPreprocessor()).toBool());
|
|
||||||
setIndexerFileSizeLimitInMb(
|
|
||||||
store.value(indexerFileSizeLimitKey(), def.indexerFileSizeLimitInMb()).toInt());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CppCodeModelSettings::PCHUsage CppCodeModelSettings::pchUsage() const
|
void CppCodeModelSettings::setCategorizeFindReferences(bool categorize)
|
||||||
{
|
{
|
||||||
return m_pchUsage;
|
Data d = data();
|
||||||
|
d.categorizeFindReferences = categorize;
|
||||||
|
setData(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppCodeModelSettings::setPCHUsage(CppCodeModelSettings::PCHUsage pchUsage)
|
|
||||||
{
|
|
||||||
m_pchUsage = pchUsage;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CppCodeModelSettings::interpretAmbigiousHeadersAsCHeaders() const
|
|
||||||
{
|
|
||||||
return m_interpretAmbigiousHeadersAsCHeaders;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CppCodeModelSettings::setInterpretAmbigiousHeadersAsCHeaders(bool yesno)
|
|
||||||
{
|
|
||||||
m_interpretAmbigiousHeadersAsCHeaders = yesno;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CppCodeModelSettings::skipIndexingBigFiles() const
|
|
||||||
{
|
|
||||||
return m_skipIndexingBigFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CppCodeModelSettings::setSkipIndexingBigFiles(bool yesno)
|
|
||||||
{
|
|
||||||
m_skipIndexingBigFiles = yesno;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CppCodeModelSettings::indexerFileSizeLimitInMb() const
|
|
||||||
{
|
|
||||||
return m_indexerFileSizeLimitInMB;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CppCodeModelSettings::setIndexerFileSizeLimitInMb(int sizeInMB)
|
|
||||||
{
|
|
||||||
m_indexerFileSizeLimitInMB = sizeInMB;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CppCodeModelSettings::ignoreFiles() const
|
|
||||||
{
|
|
||||||
return m_ignoreFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CppCodeModelSettings::setIgnoreFiles(bool ignoreFiles)
|
|
||||||
{
|
|
||||||
m_ignoreFiles = ignoreFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString CppCodeModelSettings::ignorePattern() const
|
|
||||||
{
|
|
||||||
return m_ignorePattern;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CppCodeModelSettings::setIgnorePattern(const QString& ignorePattern)
|
|
||||||
{
|
|
||||||
m_ignorePattern = ignorePattern;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool CppCodeModelSettings::enableLowerClazyLevels() const
|
|
||||||
{
|
|
||||||
return m_enableLowerClazyLevels;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CppCodeModelSettings::setEnableLowerClazyLevels(bool yesno)
|
|
||||||
{
|
|
||||||
m_enableLowerClazyLevels = yesno;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
QString ClangdSettings::priorityToString(const IndexingPriority &priority)
|
QString ClangdSettings::priorityToString(const IndexingPriority &priority)
|
||||||
{
|
{
|
||||||
switch (priority) {
|
switch (priority) {
|
||||||
|
|||||||
@@ -34,54 +34,56 @@ public:
|
|||||||
PchUse_BuildSystem = 2
|
PchUse_BuildSystem = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Data
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Utils::Store toMap() const;
|
||||||
|
void fromMap(const Utils::Store &store);
|
||||||
|
|
||||||
|
friend bool operator==(const Data &s1, const Data &s2);
|
||||||
|
friend bool operator!=(const Data &s1, const Data &s2) { return !(s1 == s2); }
|
||||||
|
|
||||||
|
PCHUsage pchUsage = PchUse_BuildSystem;
|
||||||
|
bool interpretAmbigiousHeadersAsC = false;
|
||||||
|
bool skipIndexingBigFiles = true;
|
||||||
|
bool useBuiltinPreprocessor = true;
|
||||||
|
int indexerFileSizeLimitInMb = 5;
|
||||||
|
bool enableLowerClazyLevels = true; // For UI behavior only
|
||||||
|
bool categorizeFindReferences = false; // Ephemeral!
|
||||||
|
bool ignoreFiles = false;
|
||||||
|
QString ignorePattern;
|
||||||
|
};
|
||||||
|
|
||||||
CppCodeModelSettings(Utils::QtcSettings *s) { fromSettings(s); }
|
CppCodeModelSettings(Utils::QtcSettings *s) { fromSettings(s); }
|
||||||
|
|
||||||
void toSettings(Utils::QtcSettings *s);
|
void setData(const Data &data);
|
||||||
|
Data data() const { return m_data; }
|
||||||
|
|
||||||
bool enableLowerClazyLevels() const;
|
bool enableLowerClazyLevels() const { return m_data.enableLowerClazyLevels; }
|
||||||
void setEnableLowerClazyLevels(bool yesno);
|
PCHUsage pchUsage() const { return m_data.pchUsage; }
|
||||||
|
bool interpretAmbigiousHeadersAsC() const { return m_data.interpretAmbigiousHeadersAsC; }
|
||||||
|
bool skipIndexingBigFiles() const { return m_data.skipIndexingBigFiles; }
|
||||||
|
bool useBuiltinPreprocessor() const { return m_data.useBuiltinPreprocessor; }
|
||||||
|
int indexerFileSizeLimitInMb() const { return m_data.indexerFileSizeLimitInMb; }
|
||||||
|
bool categorizeFindReferences() const { return m_data.categorizeFindReferences; }
|
||||||
|
bool ignoreFiles() const { return m_data.ignoreFiles; }
|
||||||
|
QString ignorePattern() const { return m_data.ignorePattern; }
|
||||||
|
|
||||||
PCHUsage pchUsage() const;
|
// FIXME: Doesn't belong here.
|
||||||
void setPCHUsage(PCHUsage pchUsage);
|
void setEnableLowerClazyLevels(bool enable);
|
||||||
|
|
||||||
bool interpretAmbigiousHeadersAsCHeaders() const;
|
void setCategorizeFindReferences(bool categorize);
|
||||||
void setInterpretAmbigiousHeadersAsCHeaders(bool yesno);
|
|
||||||
|
|
||||||
bool skipIndexingBigFiles() const;
|
|
||||||
void setSkipIndexingBigFiles(bool yesno);
|
|
||||||
|
|
||||||
bool useBuiltinPreprocessor() const { return m_useBuiltinPreprocessor; }
|
|
||||||
void setUseBuiltinPreprocessor(bool useBuiltin) { m_useBuiltinPreprocessor = useBuiltin; }
|
|
||||||
|
|
||||||
int indexerFileSizeLimitInMb() const;
|
|
||||||
void setIndexerFileSizeLimitInMb(int sizeInMB);
|
|
||||||
|
|
||||||
void setCategorizeFindReferences(bool categorize) { m_categorizeFindReferences = categorize; }
|
|
||||||
bool categorizeFindReferences() const { return m_categorizeFindReferences; }
|
|
||||||
|
|
||||||
bool ignoreFiles() const;
|
|
||||||
void setIgnoreFiles(bool ignoreFiles);
|
|
||||||
QString ignorePattern() const;
|
|
||||||
void setIgnorePattern(const QString& ignorePattern);
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void changed();
|
void changed();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CppCodeModelSettings() = default;
|
CppCodeModelSettings() = default;
|
||||||
void fromSettings(Utils::QtcSettings *s);
|
|
||||||
Utils::Store toMap() const;
|
|
||||||
void fromMap(const Utils::Store &store);
|
|
||||||
|
|
||||||
PCHUsage m_pchUsage = PchUse_BuildSystem;
|
void toSettings(Utils::QtcSettings *s);
|
||||||
bool m_interpretAmbigiousHeadersAsCHeaders = false;
|
void fromSettings(Utils::QtcSettings *s);
|
||||||
bool m_skipIndexingBigFiles = true;
|
|
||||||
bool m_useBuiltinPreprocessor = true;
|
Data m_data;
|
||||||
int m_indexerFileSizeLimitInMB = 5;
|
|
||||||
bool m_enableLowerClazyLevels = true; // For UI behavior only
|
|
||||||
bool m_categorizeFindReferences = false; // Ephemeral!
|
|
||||||
bool m_ignoreFiles = false;
|
|
||||||
QString m_ignorePattern;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class CPPEDITOR_EXPORT ClangdSettings : public QObject
|
class CPPEDITOR_EXPORT ClangdSettings : public QObject
|
||||||
|
|||||||
@@ -51,14 +51,13 @@ namespace CppEditor::Internal {
|
|||||||
class CppCodeModelSettingsWidget final : public Core::IOptionsPageWidget
|
class CppCodeModelSettingsWidget final : public Core::IOptionsPageWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CppCodeModelSettingsWidget();
|
CppCodeModelSettingsWidget(const CppCodeModelSettings::Data &data);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void apply() final;
|
void apply() final { codeModelSettings()->setData(data()); }
|
||||||
|
|
||||||
bool applyGeneralWidgetsToSettings() const;
|
CppCodeModelSettings::Data data() const;
|
||||||
|
|
||||||
CppCodeModelSettings *m_settings = nullptr;
|
|
||||||
QCheckBox *m_interpretAmbiguousHeadersAsCHeaders;
|
QCheckBox *m_interpretAmbiguousHeadersAsCHeaders;
|
||||||
QCheckBox *m_ignorePchCheckBox;
|
QCheckBox *m_ignorePchCheckBox;
|
||||||
QCheckBox *m_useBuiltinPreprocessorCheckBox;
|
QCheckBox *m_useBuiltinPreprocessorCheckBox;
|
||||||
@@ -68,19 +67,18 @@ private:
|
|||||||
QPlainTextEdit *m_ignorePatternTextEdit;
|
QPlainTextEdit *m_ignorePatternTextEdit;
|
||||||
};
|
};
|
||||||
|
|
||||||
CppCodeModelSettingsWidget::CppCodeModelSettingsWidget()
|
CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(const CppCodeModelSettings::Data &data)
|
||||||
: m_settings(&cppCodeModelSettings())
|
|
||||||
{
|
{
|
||||||
m_interpretAmbiguousHeadersAsCHeaders
|
m_interpretAmbiguousHeadersAsCHeaders
|
||||||
= new QCheckBox(Tr::tr("Interpret ambiguous headers as C headers"));
|
= new QCheckBox(Tr::tr("Interpret ambiguous headers as C headers"));
|
||||||
|
|
||||||
m_skipIndexingBigFilesCheckBox = new QCheckBox(Tr::tr("Do not index files greater than"));
|
m_skipIndexingBigFilesCheckBox = new QCheckBox(Tr::tr("Do not index files greater than"));
|
||||||
m_skipIndexingBigFilesCheckBox->setChecked(m_settings->skipIndexingBigFiles());
|
m_skipIndexingBigFilesCheckBox->setChecked(data.skipIndexingBigFiles);
|
||||||
|
|
||||||
m_bigFilesLimitSpinBox = new QSpinBox;
|
m_bigFilesLimitSpinBox = new QSpinBox;
|
||||||
m_bigFilesLimitSpinBox->setSuffix(Tr::tr("MB"));
|
m_bigFilesLimitSpinBox->setSuffix(Tr::tr("MB"));
|
||||||
m_bigFilesLimitSpinBox->setRange(1, 500);
|
m_bigFilesLimitSpinBox->setRange(1, 500);
|
||||||
m_bigFilesLimitSpinBox->setValue(m_settings->indexerFileSizeLimitInMb());
|
m_bigFilesLimitSpinBox->setValue(data.indexerFileSizeLimitInMb);
|
||||||
|
|
||||||
m_ignoreFilesCheckBox = new QCheckBox(Tr::tr("Ignore files"));
|
m_ignoreFilesCheckBox = new QCheckBox(Tr::tr("Ignore files"));
|
||||||
m_ignoreFilesCheckBox->setToolTip(
|
m_ignoreFilesCheckBox->setToolTip(
|
||||||
@@ -88,8 +86,8 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget()
|
|||||||
+ Tr::tr("Ignore files that match these wildcard patterns, one wildcard per line.")
|
+ Tr::tr("Ignore files that match these wildcard patterns, one wildcard per line.")
|
||||||
+ "</p></body></html>");
|
+ "</p></body></html>");
|
||||||
|
|
||||||
m_ignoreFilesCheckBox->setChecked(m_settings->ignoreFiles());
|
m_ignoreFilesCheckBox->setChecked(data.ignoreFiles);
|
||||||
m_ignorePatternTextEdit = new QPlainTextEdit(m_settings->ignorePattern());
|
m_ignorePatternTextEdit = new QPlainTextEdit(data.ignorePattern);
|
||||||
m_ignorePatternTextEdit->setToolTip(m_ignoreFilesCheckBox->toolTip());
|
m_ignorePatternTextEdit->setToolTip(m_ignoreFilesCheckBox->toolTip());
|
||||||
m_ignorePatternTextEdit->setEnabled(m_ignoreFilesCheckBox->isChecked());
|
m_ignorePatternTextEdit->setEnabled(m_ignoreFilesCheckBox->isChecked());
|
||||||
|
|
||||||
@@ -109,11 +107,9 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget()
|
|||||||
(Tr::tr("Uncheck this to invoke the actual compiler "
|
(Tr::tr("Uncheck this to invoke the actual compiler "
|
||||||
"to show a pre-processed source file in the editor."));
|
"to show a pre-processed source file in the editor."));
|
||||||
|
|
||||||
m_interpretAmbiguousHeadersAsCHeaders->setChecked(
|
m_interpretAmbiguousHeadersAsCHeaders->setChecked(data.interpretAmbigiousHeadersAsC);
|
||||||
m_settings->interpretAmbigiousHeadersAsCHeaders());
|
m_ignorePchCheckBox->setChecked(data.pchUsage == CppCodeModelSettings::PchUse_None);
|
||||||
|
m_useBuiltinPreprocessorCheckBox->setChecked(data.useBuiltinPreprocessor);
|
||||||
m_ignorePchCheckBox->setChecked(m_settings->pchUsage() == CppCodeModelSettings::PchUse_None);
|
|
||||||
m_useBuiltinPreprocessorCheckBox->setChecked(m_settings->useBuiltinPreprocessor());
|
|
||||||
|
|
||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
|
|
||||||
@@ -132,61 +128,18 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget()
|
|||||||
}.attachTo(this);
|
}.attachTo(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppCodeModelSettingsWidget::apply()
|
CppCodeModelSettings::Data CppCodeModelSettingsWidget::data() const
|
||||||
{
|
{
|
||||||
if (applyGeneralWidgetsToSettings())
|
CppCodeModelSettings::Data data;
|
||||||
m_settings->toSettings(Core::ICore::settings());
|
data.interpretAmbigiousHeadersAsC = m_interpretAmbiguousHeadersAsCHeaders->isChecked();
|
||||||
}
|
data.skipIndexingBigFiles = m_skipIndexingBigFilesCheckBox->isChecked();
|
||||||
|
data.useBuiltinPreprocessor = m_useBuiltinPreprocessorCheckBox->isChecked();
|
||||||
bool CppCodeModelSettingsWidget::applyGeneralWidgetsToSettings() const
|
data.ignoreFiles = m_ignoreFilesCheckBox->isChecked();
|
||||||
{
|
data.ignorePattern = m_ignorePatternTextEdit->toPlainText();
|
||||||
bool settingsChanged = false;
|
data.indexerFileSizeLimitInMb = m_bigFilesLimitSpinBox->value();
|
||||||
|
data.pchUsage = m_ignorePchCheckBox->isChecked() ? CppCodeModelSettings::PchUse_None
|
||||||
const bool newInterpretAmbiguousHeaderAsCHeaders
|
|
||||||
= m_interpretAmbiguousHeadersAsCHeaders->isChecked();
|
|
||||||
if (m_settings->interpretAmbigiousHeadersAsCHeaders()
|
|
||||||
!= newInterpretAmbiguousHeaderAsCHeaders) {
|
|
||||||
m_settings->setInterpretAmbigiousHeadersAsCHeaders(newInterpretAmbiguousHeaderAsCHeaders);
|
|
||||||
settingsChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const bool newSkipIndexingBigFiles = m_skipIndexingBigFilesCheckBox->isChecked();
|
|
||||||
if (m_settings->skipIndexingBigFiles() != newSkipIndexingBigFiles) {
|
|
||||||
m_settings->setSkipIndexingBigFiles(newSkipIndexingBigFiles);
|
|
||||||
settingsChanged = true;
|
|
||||||
}
|
|
||||||
const bool newUseBuiltinPreprocessor = m_useBuiltinPreprocessorCheckBox->isChecked();
|
|
||||||
if (m_settings->useBuiltinPreprocessor() != newUseBuiltinPreprocessor) {
|
|
||||||
m_settings->setUseBuiltinPreprocessor(newUseBuiltinPreprocessor);
|
|
||||||
settingsChanged = true;
|
|
||||||
}
|
|
||||||
const bool ignoreFiles = m_ignoreFilesCheckBox->isChecked();
|
|
||||||
if (m_settings->ignoreFiles() != ignoreFiles) {
|
|
||||||
m_settings->setIgnoreFiles(ignoreFiles);
|
|
||||||
settingsChanged = true;
|
|
||||||
}
|
|
||||||
const QString ignorePattern = m_ignorePatternTextEdit->toPlainText();
|
|
||||||
if (m_settings->ignorePattern() != ignorePattern) {
|
|
||||||
m_settings->setIgnorePattern(ignorePattern);
|
|
||||||
settingsChanged = true;
|
|
||||||
}
|
|
||||||
const int newFileSizeLimit = m_bigFilesLimitSpinBox->value();
|
|
||||||
if (m_settings->indexerFileSizeLimitInMb() != newFileSizeLimit) {
|
|
||||||
m_settings->setIndexerFileSizeLimitInMb(newFileSizeLimit);
|
|
||||||
settingsChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const bool newIgnorePch = m_ignorePchCheckBox->isChecked();
|
|
||||||
const bool previousIgnorePch = m_settings->pchUsage() == CppCodeModelSettings::PchUse_None;
|
|
||||||
if (newIgnorePch != previousIgnorePch) {
|
|
||||||
const CppCodeModelSettings::PCHUsage pchUsage = m_ignorePchCheckBox->isChecked()
|
|
||||||
? CppCodeModelSettings::PchUse_None
|
|
||||||
: CppCodeModelSettings::PchUse_BuildSystem;
|
: CppCodeModelSettings::PchUse_BuildSystem;
|
||||||
m_settings->setPCHUsage(pchUsage);
|
return data;
|
||||||
settingsChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return settingsChanged;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class CppCodeModelSettingsPage final : public Core::IOptionsPage
|
class CppCodeModelSettingsPage final : public Core::IOptionsPage
|
||||||
@@ -199,7 +152,7 @@ public:
|
|||||||
setCategory(Constants::CPP_SETTINGS_CATEGORY);
|
setCategory(Constants::CPP_SETTINGS_CATEGORY);
|
||||||
setDisplayCategory(Tr::tr("C++"));
|
setDisplayCategory(Tr::tr("C++"));
|
||||||
setCategoryIconPath(":/projectexplorer/images/settingscategory_cpp.png");
|
setCategoryIconPath(":/projectexplorer/images/settingscategory_cpp.png");
|
||||||
setWidgetCreator([] { return new CppCodeModelSettingsWidget; });
|
setWidgetCreator([] { return new CppCodeModelSettingsWidget(codeModelSettings()->data()); });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user