forked from qt-creator/qt-creator
CppEditor: Move some convenience functions to CppCodeModelSettings class
Change-Id: I0af8560c23374ce4f6c46f98d498d44f7cb50db3 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -418,7 +418,8 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir, c
|
||||
CppEditor::CompilerOptionsBuilder optionsBuilder = clangOptionsBuilder(
|
||||
*CppEditor::CppModelManager::fallbackProjectPart(),
|
||||
warningsConfigForProject(nullptr), includeDir, {});
|
||||
const CppEditor::UsePrecompiledHeaders usePch = CppEditor::getPchUsage();
|
||||
const CppEditor::UsePrecompiledHeaders usePch
|
||||
= CppEditor::CppCodeModelSettings::instance().usePrecompiledHeaders();
|
||||
const QJsonArray projectPartOptions = fullProjectPartOptions(
|
||||
optionsBuilder, globalClangOptions());
|
||||
const QJsonArray clangOptions = clangOptionsForFile({}, optionsBuilder.projectPart(),
|
||||
@@ -599,7 +600,7 @@ void ClangdClient::findUsages(const CppEditor::CursorInEditor &cursor,
|
||||
}
|
||||
}
|
||||
|
||||
const bool categorize = CppEditor::codeModelSettings()->categorizeFindReferences();
|
||||
const bool categorize = CppEditor::CppCodeModelSettings::instance().categorizeFindReferences();
|
||||
|
||||
// If it's a "normal" symbol, go right ahead.
|
||||
if (searchTerm != "operator" && Utils::allOf(searchTerm, [](const QChar &c) {
|
||||
@@ -919,8 +920,13 @@ void ClangdClient::updateParserConfig(const Utils::FilePath &filePath,
|
||||
CppEditor::ProjectFile::classify(filePath.toString()));
|
||||
const QJsonArray projectPartOptions = fullProjectPartOptions(
|
||||
optionsBuilder, globalClangOptions());
|
||||
addToCompilationDb(cdbChanges, *projectPart, CppEditor::getPchUsage(), projectPartOptions,
|
||||
filePath.parentDir(), file, optionsBuilder.isClStyle());
|
||||
addToCompilationDb(cdbChanges,
|
||||
*projectPart,
|
||||
CppEditor::CppCodeModelSettings::instance().usePrecompiledHeaders(),
|
||||
projectPartOptions,
|
||||
filePath.parentDir(),
|
||||
file,
|
||||
optionsBuilder.isClStyle());
|
||||
QJsonObject settings;
|
||||
addCompilationDb(settings, cdbChanges);
|
||||
DidChangeConfigurationParams configChangeParams;
|
||||
|
@@ -166,7 +166,7 @@ GenerateCompilationDbResult generateCompilationDB(QList<ProjectInfo::ConstPtr> p
|
||||
}
|
||||
compileCommandsFile.write("[");
|
||||
|
||||
const UsePrecompiledHeaders usePch = getPchUsage();
|
||||
const UsePrecompiledHeaders usePch = CppCodeModelSettings::instance().usePrecompiledHeaders();
|
||||
const QJsonArray jsonProjectOptions = QJsonArray::fromStringList(projectOptions);
|
||||
for (const ProjectInfo::ConstPtr &projectInfo : std::as_const(projectInfoList)) {
|
||||
QTC_ASSERT(projectInfo, continue);
|
||||
|
@@ -249,7 +249,7 @@ private:
|
||||
void ClangdTestFindReferences::initTestCase()
|
||||
{
|
||||
ClangdTest::initTestCase();
|
||||
CppEditor::codeModelSettings()->setCategorizeFindReferences(true);
|
||||
CppEditor::CppCodeModelSettings::instance().setCategorizeFindReferences(true);
|
||||
connect(client(), &ClangdClient::foundReferences, this,
|
||||
[this](const SearchResultItems &results) {
|
||||
if (results.isEmpty())
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <cppeditor/clangdiagnosticconfigsmodel.h>
|
||||
#include <cppeditor/cppcodemodelsettings.h>
|
||||
#include <cppeditor/cppprojectfile.h>
|
||||
#include <cppeditor/cpptoolsreuse.h>
|
||||
|
||||
@@ -25,7 +26,6 @@
|
||||
#include <QFileInfo>
|
||||
#include <QLoggingCategory>
|
||||
|
||||
|
||||
static Q_LOGGING_CATEGORY(LOG, "qtc.clangtools.runner", QtWarningMsg)
|
||||
|
||||
using namespace CppEditor;
|
||||
@@ -49,7 +49,9 @@ AnalyzeUnit::AnalyzeUnit(const FileInfo &fileInfo,
|
||||
actualClangIncludeDir);
|
||||
file = fileInfo.file;
|
||||
arguments = extraClangToolsPrependOptions();
|
||||
arguments.append(optionsBuilder.build(fileInfo.kind, CppEditor::getPchUsage()));
|
||||
arguments.append(
|
||||
optionsBuilder.build(fileInfo.kind,
|
||||
CppEditor::CppCodeModelSettings::instance().usePrecompiledHeaders()));
|
||||
arguments.append(extraClangToolsAppendOptions());
|
||||
}
|
||||
|
||||
|
@@ -35,8 +35,8 @@ BaseEditorDocumentProcessor::~BaseEditorDocumentProcessor() = default;
|
||||
|
||||
void BaseEditorDocumentProcessor::run(bool projectsUpdated)
|
||||
{
|
||||
const Utils::Language languagePreference = codeModelSettings()->interpretAmbigiousHeadersAsC()
|
||||
? Utils::Language::C
|
||||
const Utils::Language languagePreference
|
||||
= CppCodeModelSettings::instance().interpretAmbigiousHeadersAsC() ? Utils::Language::C
|
||||
: Utils::Language::Cxx;
|
||||
|
||||
runImpl({CppModelManager::workingCopy(),
|
||||
|
@@ -143,16 +143,17 @@ QList<TextEditor::BlockRange> toTextEditorBlocks(
|
||||
|
||||
BuiltinEditorDocumentProcessor::BuiltinEditorDocumentProcessor(TextEditor::TextDocument *document)
|
||||
: BaseEditorDocumentProcessor(document->document(), document->filePath())
|
||||
, m_parser(new BuiltinEditorDocumentParser(document->filePath(), indexerFileSizeLimitInMb()))
|
||||
, m_parser(new BuiltinEditorDocumentParser(document->filePath(),
|
||||
CppCodeModelSettings::instance()
|
||||
.effectiveIndexerFileSizeLimitInMb()))
|
||||
, m_codeWarningsUpdated(false)
|
||||
, m_semanticHighlighter(new SemanticHighlighter(document))
|
||||
{
|
||||
using namespace Internal;
|
||||
|
||||
const CppCodeModelSettings *cms = &cppCodeModelSettings();
|
||||
|
||||
BaseEditorDocumentParser::Configuration config = m_parser->configuration();
|
||||
config.usePrecompiledHeaders = cms->pchUsage() != CppCodeModelSettings::PchUse_None;
|
||||
config.usePrecompiledHeaders = CppCodeModelSettings::instance().pchUsage()
|
||||
!= CppCodeModelSettings::PchUse_None;
|
||||
m_parser->setConfiguration(config);
|
||||
|
||||
m_semanticHighlighter->setHighlightingRunner(
|
||||
|
@@ -9,7 +9,7 @@
|
||||
|
||||
namespace CppEditor {
|
||||
|
||||
enum class UsePrecompiledHeaders : char { Yes, No };
|
||||
enum class UsePrecompiledHeaders { Yes, No };
|
||||
enum class UseSystemHeader : char { Yes, No };
|
||||
enum class UseTweakedHeaderPaths : char { Yes, Tools, No };
|
||||
enum class UseToolchainMacros : char { Yes, No };
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#include "cppcodemodelsettings.h"
|
||||
|
||||
#include "clangdiagnosticconfigsmodel.h"
|
||||
#include "compileroptionsbuilder.h"
|
||||
#include "cppeditorconstants.h"
|
||||
#include "cppeditortr.h"
|
||||
#include "cpptoolsreuse.h"
|
||||
@@ -125,6 +126,12 @@ void CppCodeModelSettings::toSettings(QtcSettings *s)
|
||||
emit changed(); // TODO: Why?
|
||||
}
|
||||
|
||||
CppCodeModelSettings &CppCodeModelSettings::instance()
|
||||
{
|
||||
static CppCodeModelSettings theCppCodeModelSettings(Core::ICore::settings());
|
||||
return theCppCodeModelSettings;
|
||||
}
|
||||
|
||||
void CppCodeModelSettings::setData(const Data &data)
|
||||
{
|
||||
if (m_data != data) {
|
||||
@@ -134,6 +141,18 @@ void CppCodeModelSettings::setData(const Data &data)
|
||||
}
|
||||
}
|
||||
|
||||
UsePrecompiledHeaders CppCodeModelSettings::usePrecompiledHeaders() const
|
||||
{
|
||||
if (instance().pchUsage() == CppCodeModelSettings::PchUse_None)
|
||||
return UsePrecompiledHeaders::No;
|
||||
return UsePrecompiledHeaders::Yes;
|
||||
}
|
||||
|
||||
int CppCodeModelSettings::effectiveIndexerFileSizeLimitInMb() const
|
||||
{
|
||||
return instance().skipIndexingBigFiles() ? instance().indexerFileSizeLimitInMb() : -1;
|
||||
}
|
||||
|
||||
void CppCodeModelSettings::setCategorizeFindReferences(bool categorize)
|
||||
{
|
||||
Data d = data();
|
||||
@@ -578,10 +597,4 @@ int ClangdSettings::Data::defaultCompletionResults()
|
||||
return ok ? userValue : 100;
|
||||
}
|
||||
|
||||
CppCodeModelSettings &cppCodeModelSettings()
|
||||
{
|
||||
static CppCodeModelSettings theCppCodeModelSettings(Core::ICore::settings());
|
||||
return theCppCodeModelSettings;
|
||||
}
|
||||
|
||||
} // namespace CppEditor
|
||||
|
@@ -22,6 +22,7 @@ class MacroExpander;
|
||||
} // namespace Utils
|
||||
|
||||
namespace CppEditor {
|
||||
enum class UsePrecompiledHeaders;
|
||||
|
||||
class CPPEDITOR_EXPORT CppCodeModelSettings : public QObject
|
||||
{
|
||||
@@ -52,16 +53,18 @@ public:
|
||||
QString ignorePattern;
|
||||
};
|
||||
|
||||
CppCodeModelSettings(Utils::QtcSettings *s) { fromSettings(s); }
|
||||
static CppCodeModelSettings &instance();
|
||||
|
||||
void setData(const Data &data);
|
||||
Data data() const { return m_data; }
|
||||
|
||||
PCHUsage pchUsage() const { return m_data.pchUsage; }
|
||||
UsePrecompiledHeaders usePrecompiledHeaders() const;
|
||||
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; }
|
||||
int effectiveIndexerFileSizeLimitInMb() const;
|
||||
bool categorizeFindReferences() const { return m_data.categorizeFindReferences; }
|
||||
bool ignoreFiles() const { return m_data.ignoreFiles; }
|
||||
QString ignorePattern() const { return m_data.ignorePattern; }
|
||||
@@ -73,6 +76,7 @@ signals:
|
||||
|
||||
private:
|
||||
CppCodeModelSettings() = default;
|
||||
CppCodeModelSettings(Utils::QtcSettings *s) { fromSettings(s); }
|
||||
|
||||
void toSettings(Utils::QtcSettings *s);
|
||||
void fromSettings(Utils::QtcSettings *s);
|
||||
@@ -224,6 +228,4 @@ private:
|
||||
bool m_blockIndexing = false;
|
||||
};
|
||||
|
||||
CppCodeModelSettings &cppCodeModelSettings();
|
||||
|
||||
} // namespace CppEditor
|
||||
|
@@ -54,7 +54,7 @@ public:
|
||||
CppCodeModelSettingsWidget(const CppCodeModelSettings::Data &data);
|
||||
|
||||
private:
|
||||
void apply() final { codeModelSettings()->setData(data()); }
|
||||
void apply() final { CppCodeModelSettings::instance().setData(data()); }
|
||||
|
||||
CppCodeModelSettings::Data data() const;
|
||||
|
||||
@@ -152,7 +152,8 @@ public:
|
||||
setCategory(Constants::CPP_SETTINGS_CATEGORY);
|
||||
setDisplayCategory(Tr::tr("C++"));
|
||||
setCategoryIconPath(":/projectexplorer/images/settingscategory_cpp.png");
|
||||
setWidgetCreator([] { return new CppCodeModelSettingsWidget(codeModelSettings()->data()); });
|
||||
setWidgetCreator(
|
||||
[] { return new CppCodeModelSettingsWidget(CppCodeModelSettings::instance().data()); });
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -348,9 +348,9 @@ void CppEditorPlugin::addPerSymbolActions()
|
||||
findRefsCategorized.addToContainers(menus, Constants::G_SYMBOL);
|
||||
findRefsCategorized.addOnTriggered(this, [] {
|
||||
if (const auto w = currentCppEditorWidget()) {
|
||||
codeModelSettings()->setCategorizeFindReferences(true);
|
||||
CppCodeModelSettings::instance().setCategorizeFindReferences(true);
|
||||
w->findUsages();
|
||||
codeModelSettings()->setCategorizeFindReferences(false);
|
||||
CppCodeModelSettings::instance().setCategorizeFindReferences(false);
|
||||
}
|
||||
});
|
||||
|
||||
|
@@ -388,7 +388,7 @@ void CppFindReferences::findUsages(CPlusPlus::Symbol *symbol,
|
||||
search->setTextToReplace(replacement);
|
||||
if (callback)
|
||||
search->makeNonInteractive(callback);
|
||||
if (codeModelSettings()->categorizeFindReferences())
|
||||
if (CppCodeModelSettings::instance().categorizeFindReferences())
|
||||
search->setFilter(new CppSearchResultFilter);
|
||||
setupSearch(search);
|
||||
search->setSearchAgainSupported(true);
|
||||
@@ -397,7 +397,7 @@ void CppFindReferences::findUsages(CPlusPlus::Symbol *symbol,
|
||||
CppFindReferencesParameters parameters;
|
||||
parameters.symbolId = fullIdForSymbol(symbol);
|
||||
parameters.symbolFilePath = symbol->filePath();
|
||||
parameters.categorize = codeModelSettings()->categorizeFindReferences();
|
||||
parameters.categorize = CppCodeModelSettings::instance().categorizeFindReferences();
|
||||
parameters.preferLowerCaseFileNames = preferLowerCaseFileNames(
|
||||
ProjectManager::projectForFile(symbol->filePath()));
|
||||
|
||||
@@ -408,7 +408,8 @@ void CppFindReferences::findUsages(CPlusPlus::Symbol *symbol,
|
||||
}
|
||||
|
||||
search->setUserData(QVariant::fromValue(parameters));
|
||||
findAll_helper(search, symbol, context, codeModelSettings()->categorizeFindReferences());
|
||||
findAll_helper(search, symbol, context,
|
||||
CppCodeModelSettings::instance().categorizeFindReferences());
|
||||
}
|
||||
|
||||
void CppFindReferences::renameUsages(CPlusPlus::Symbol *symbol,
|
||||
|
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "builtineditordocumentparser.h"
|
||||
#include "cppchecksymbols.h"
|
||||
#include "cppcodemodelsettings.h"
|
||||
#include "cppeditorconstants.h"
|
||||
#include "cppeditortr.h"
|
||||
#include "cppsourceprocessor.h"
|
||||
|
@@ -407,7 +407,7 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit)
|
||||
saveAndOpen(outFilePath, content.append(preprocessedDoc->utf8Source()), inNextSplit);
|
||||
};
|
||||
|
||||
if (codeModelSettings()->useBuiltinPreprocessor()) {
|
||||
if (CppCodeModelSettings::instance().useBuiltinPreprocessor()) {
|
||||
useBuiltinPreprocessor();
|
||||
return;
|
||||
}
|
||||
@@ -1349,10 +1349,12 @@ QFuture<void> CppModelManager::updateSourceFiles(const QSet<FilePath> &sourceFil
|
||||
if (sourceFiles.isEmpty() || !d->m_indexerEnabled)
|
||||
return QFuture<void>();
|
||||
|
||||
const QSet<QString> filteredFiles = filteredFilesRemoved(transform(sourceFiles, &FilePath::toString),
|
||||
indexerFileSizeLimitInMb(),
|
||||
codeModelSettings()->ignoreFiles(),
|
||||
codeModelSettings()->ignorePattern());
|
||||
const CppCodeModelSettings &settings = CppCodeModelSettings::instance();
|
||||
const QSet<QString> filteredFiles
|
||||
= filteredFilesRemoved(transform(sourceFiles, &FilePath::toString),
|
||||
settings.effectiveIndexerFileSizeLimitInMb(),
|
||||
settings.ignoreFiles(),
|
||||
settings.ignorePattern());
|
||||
|
||||
return d->m_internalIndexingSupport->refreshSourceFiles(filteredFiles, mode);
|
||||
}
|
||||
|
@@ -357,22 +357,6 @@ CppCompletionAssistProcessor *getCppCompletionAssistProcessor()
|
||||
return new Internal::InternalCppCompletionAssistProcessor();
|
||||
}
|
||||
|
||||
CppCodeModelSettings *codeModelSettings()
|
||||
{
|
||||
return &cppCodeModelSettings();
|
||||
}
|
||||
|
||||
int indexerFileSizeLimitInMb()
|
||||
{
|
||||
const CppCodeModelSettings *settings = codeModelSettings();
|
||||
QTC_ASSERT(settings, return -1);
|
||||
|
||||
if (settings->skipIndexingBigFiles())
|
||||
return settings->indexerFileSizeLimitInMb();
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool fileSizeExceedsLimit(const FilePath &filePath, int sizeLimitInMb)
|
||||
{
|
||||
if (sizeLimitInMb <= 0)
|
||||
@@ -392,14 +376,6 @@ bool fileSizeExceedsLimit(const FilePath &filePath, int sizeLimitInMb)
|
||||
return false;
|
||||
}
|
||||
|
||||
UsePrecompiledHeaders getPchUsage()
|
||||
{
|
||||
const CppCodeModelSettings *cms = codeModelSettings();
|
||||
if (cms->pchUsage() == CppCodeModelSettings::PchUse_None)
|
||||
return UsePrecompiledHeaders::No;
|
||||
return UsePrecompiledHeaders::Yes;
|
||||
}
|
||||
|
||||
static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model)
|
||||
{
|
||||
ClangDiagnosticConfig config;
|
||||
|
@@ -73,14 +73,11 @@ Utils::FilePath CPPEDITOR_EXPORT correspondingHeaderOrSource(
|
||||
|
||||
void CPPEDITOR_EXPORT openEditor(const Utils::FilePath &filePath, bool inNextSplit,
|
||||
Utils::Id editorId = {});
|
||||
class CppCodeModelSettings;
|
||||
CppCodeModelSettings CPPEDITOR_EXPORT *codeModelSettings();
|
||||
|
||||
QString CPPEDITOR_EXPORT preferredCxxHeaderSuffix(ProjectExplorer::Project *project);
|
||||
QString CPPEDITOR_EXPORT preferredCxxSourceSuffix(ProjectExplorer::Project *project);
|
||||
bool CPPEDITOR_EXPORT preferLowerCaseFileNames(ProjectExplorer::Project *project);
|
||||
|
||||
|
||||
QList<Utils::Text::Range> CPPEDITOR_EXPORT symbolOccurrencesInText(
|
||||
const QTextDocument &doc, QStringView text, int offset, const QString &symbolName);
|
||||
Utils::SearchResultItems CPPEDITOR_EXPORT
|
||||
@@ -88,9 +85,6 @@ symbolOccurrencesInDeclarationComments(const Utils::SearchResultItems &symbolOcc
|
||||
QList<Utils::Text::Range> CPPEDITOR_EXPORT symbolOccurrencesInDeclarationComments(
|
||||
CppEditorWidget *editorWidget, const QTextCursor &cursor);
|
||||
|
||||
UsePrecompiledHeaders CPPEDITOR_EXPORT getPchUsage();
|
||||
|
||||
int indexerFileSizeLimitInMb();
|
||||
bool fileSizeExceedsLimit(const Utils::FilePath &filePath, int sizeLimitInMb);
|
||||
|
||||
ProjectExplorer::Project CPPEDITOR_EXPORT *projectForProjectInfo(const ProjectInfo &info);
|
||||
|
Reference in New Issue
Block a user