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"