cppeditor: make it possible to ignore patterns

Allows the user to ignore certain patterns so that these files wont
be indexed

Fixes: QTCREATORBUG-28313
Change-Id: I2a860a473ca1a267e9fab31436fc98b8f4004484
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Philip Van Hoof
2022-10-14 17:27:14 +02:00
parent 001d55e1f0
commit 55b8ab7846
5 changed files with 105 additions and 5 deletions

View File

@@ -31,6 +31,7 @@
#include <QTextStream>
#include <QVBoxLayout>
#include <QVersionNumber>
#include <QTextBlock>
#include <limits>
@@ -54,6 +55,8 @@ private:
QCheckBox *m_useBuiltinPreprocessorCheckBox;
QCheckBox *m_skipIndexingBigFilesCheckBox;
QSpinBox *m_bigFilesLimitSpinBox;
QCheckBox *m_ignoreFilesCheckBox;
QPlainTextEdit *m_ignorePatternTextEdit;
};
CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(CppCodeModelSettings *s)
@@ -70,6 +73,19 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(CppCodeModelSettings *s)
m_bigFilesLimitSpinBox->setRange(1, 500);
m_bigFilesLimitSpinBox->setValue(m_settings->indexerFileSizeLimitInMb());
m_ignoreFilesCheckBox = new QCheckBox(tr("Ignore files"));
m_ignoreFilesCheckBox->setToolTip(tr(
"<html><head/><body><p>Ignore files that match these wildcard patterns, one wildcard per line.</p></body></html>"));
m_ignoreFilesCheckBox->setChecked(m_settings->ignoreFiles());
m_ignorePatternTextEdit = new QPlainTextEdit(m_settings->ignorePattern());
m_ignorePatternTextEdit->setToolTip(m_ignoreFilesCheckBox->toolTip());
m_ignorePatternTextEdit->setEnabled(m_ignoreFilesCheckBox->isChecked());
connect(m_ignoreFilesCheckBox, &QCheckBox::stateChanged, [this] {
m_ignorePatternTextEdit->setEnabled(m_ignoreFilesCheckBox->isChecked());
});
m_ignorePchCheckBox = new QCheckBox(tr("Ignore precompiled headers"));
m_ignorePchCheckBox->setToolTip(tr(
"<html><head/><body><p>When precompiled headers are not ignored, the parsing for code "
@@ -98,6 +114,7 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(CppCodeModelSettings *s)
m_ignorePchCheckBox,
m_useBuiltinPreprocessorCheckBox,
Row { m_skipIndexingBigFilesCheckBox, m_bigFilesLimitSpinBox, st },
Row { Column { m_ignoreFilesCheckBox, st }, m_ignorePatternTextEdit },
}
},
st
@@ -132,6 +149,16 @@ bool CppCodeModelSettingsWidget::applyGeneralWidgetsToSettings() const
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);