File indexing completed on 2024-04-28 04:37:15

0001 /*
0002     SPDX-FileCopyrightText: 2008 David Nolden <david.nolden.kdevelop@art-master.de>
0003     SPDX-FileCopyrightText: 2013 Vlas Puhov <vlas.puhov@mail.ru>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "completionsettings.h"
0009 #include "languageconfig.h"
0010 
0011 #include <KShell>
0012 #include <KSharedConfig>
0013 
0014 #include <QMetaEnum>
0015 
0016 namespace KDevelop
0017 {
0018 
0019 static QString completionLevelToString(ICompletionSettings::CompletionLevel l)
0020 {
0021     if (l < 0 || l >= ICompletionSettings::LAST_LEVEL) {
0022         return QString();
0023     }
0024 
0025     const static QString levels[ICompletionSettings::LAST_LEVEL] = {QStringLiteral("Minimal"), QStringLiteral("MinimalWhenAutomatic"), QStringLiteral("AlwaysFull")};
0026     return levels[l];
0027 }
0028 
0029 CompletionSettings& CompletionSettings::self()
0030 {
0031     static CompletionSettings settings;
0032     return settings;
0033 }
0034 
0035 QStringList CompletionSettings::todoMarkerWords() const
0036 {
0037     const QString markers = m_languageGroup.readEntry("todoMarkerWords", m_todoMarkerWords);
0038     return KShell::splitArgs(markers);
0039 }
0040 
0041 int CompletionSettings::minFilesForSimplifiedParsing() const
0042 {
0043     return m_languageGroup.readEntry("minFilesForSimplifiedParsing", m_minFilesForSimplifiedParsing);
0044 }
0045 
0046 bool CompletionSettings::showMultiLineSelectionInformation() const
0047 {
0048     return m_languageGroup.readEntry("showMultiLineSelectionInformation", m_showMultiLineInformation);
0049 }
0050 
0051 bool CompletionSettings::highlightProblematicLines() const
0052 {
0053     return m_languageGroup.readEntry("highlightProblematicLines", m_highlightProblematicLines);
0054 }
0055 
0056 bool CompletionSettings::highlightSemanticProblems() const
0057 {
0058     return m_languageGroup.readEntry("highlightSemanticProblems", m_highlightSemanticProblems);
0059 }
0060 
0061 ICompletionSettings::ProblemInlineNotesLevel CompletionSettings::problemInlineNotesLevel() const
0062 {
0063     return LanguageConfig::problemInlineNotesLevel();
0064 }
0065 
0066 bool CompletionSettings::boldDeclarations() const
0067 {
0068     return m_languageGroup.readEntry("boldDeclarations", m_boldDeclarations);
0069 }
0070 
0071 int CompletionSettings::globalColorizationLevel() const
0072 {
0073     return m_languageGroup.readEntry("globalColorization", m_globalColorizationLevel);
0074 }
0075 
0076 CompletionSettings::GlobalColorSource CompletionSettings::globalColorSource() const
0077 {
0078     const auto metaEnum = QMetaEnum::fromType<GlobalColorSource>();
0079     const auto globalColorSource = m_languageGroup.readEntry("globalColorSource", QByteArray());
0080     bool ok = false;
0081     auto value = metaEnum.keyToValue(globalColorSource.constData(), &ok);
0082     return ok ? static_cast<GlobalColorSource>(value) : m_globalColorSource;
0083 }
0084 
0085 int CompletionSettings::localColorizationLevel() const
0086 {
0087     return m_languageGroup.readEntry("localColorization", m_localColorizationLevel);
0088 }
0089 
0090 bool CompletionSettings::automaticCompletionEnabled() const
0091 {
0092     return m_languageGroup.readEntry("Automatic Invocation", m_automatic);
0093 }
0094 
0095 ICompletionSettings::CompletionLevel CompletionSettings::completionLevel() const
0096 {
0097     const QString level = m_languageGroup.readEntry("completionDetail", completionLevelToString(m_level));
0098 
0099     for (int i = 0; i < ICompletionSettings::LAST_LEVEL; i++) {
0100         if (completionLevelToString(static_cast<CompletionLevel>(i)) == level) {
0101             return static_cast<CompletionLevel>(i);
0102         }
0103     }
0104     return m_level;
0105 }
0106 
0107 auto CompletionSettings::precompiledPreambleStorage() const -> PrecompiledPreambleStorage
0108 {
0109     return static_cast<PrecompiledPreambleStorage>(LanguageConfig::precompiledPreambleStorage());
0110 }
0111 
0112 CompletionSettings::CompletionSettings()
0113     : m_todoMarkerWords(QStringLiteral("TODO FIXME"))
0114     , m_languageGroup(KSharedConfig::openConfig(), "Language Support"){}
0115 }
0116 
0117 #include "moc_completionsettings.cpp"