1 /*
2     SPDX-FileCopyrightText: 2008 David Nolden <david.nolden.kdevelop@art-master.de>
3     SPDX-FileCopyrightText: 2013 Vlas Puhov <vlas.puhov@mail.ru>
4 
5     SPDX-License-Identifier: LGPL-2.0-or-later
6 */
7 
8 #include "completionsettings.h"
9 #include "languageconfig.h"
10 #include <KShell>
11 #include <KSharedConfig>
12 
13 namespace KDevelop
14 {
15 
completionLevelToString(ICompletionSettings::CompletionLevel l)16 static QString completionLevelToString(ICompletionSettings::CompletionLevel l)
17 {
18     if (l < 0 || l >= ICompletionSettings::LAST_LEVEL) {
19         return QString();
20     }
21 
22     const static QString levels[ICompletionSettings::LAST_LEVEL] = {QStringLiteral("Minimal"), QStringLiteral("MinimalWhenAutomatic"), QStringLiteral("AlwaysFull")};
23     return levels[l];
24 }
25 
self()26 CompletionSettings& CompletionSettings::self()
27 {
28     static CompletionSettings settings;
29     return settings;
30 }
31 
todoMarkerWords() const32 QStringList CompletionSettings::todoMarkerWords() const
33 {
34     const QString markers = m_languageGroup.readEntry("todoMarkerWords", m_todoMarkerWords);
35     return KShell::splitArgs(markers);
36 }
37 
minFilesForSimplifiedParsing() const38 int CompletionSettings::minFilesForSimplifiedParsing() const
39 {
40     return m_languageGroup.readEntry("minFilesForSimplifiedParsing", m_minFilesForSimplifiedParsing);
41 }
42 
showMultiLineSelectionInformation() const43 bool CompletionSettings::showMultiLineSelectionInformation() const
44 {
45     return m_languageGroup.readEntry("showMultiLineSelectionInformation", m_showMultiLineInformation);
46 }
47 
highlightProblematicLines() const48 bool CompletionSettings::highlightProblematicLines() const
49 {
50     return m_languageGroup.readEntry("highlightProblematicLines", m_highlightProblematicLines);
51 }
52 
highlightSemanticProblems() const53 bool CompletionSettings::highlightSemanticProblems() const
54 {
55     return m_languageGroup.readEntry("highlightSemanticProblems", m_highlightSemanticProblems);
56 }
57 
problemInlineNotesLevel() const58 ICompletionSettings::ProblemInlineNotesLevel CompletionSettings::problemInlineNotesLevel() const
59 {
60     return LanguageConfig::problemInlineNotesLevel();
61 }
62 
boldDeclarations() const63 bool CompletionSettings::boldDeclarations() const
64 {
65     return m_languageGroup.readEntry("boldDeclarations", m_boldDeclarations);
66 }
67 
globalColorizationLevel() const68 int CompletionSettings::globalColorizationLevel() const
69 {
70     return m_languageGroup.readEntry("globalColorization", m_globalColorizationLevel);
71 }
72 
localColorizationLevel() const73 int CompletionSettings::localColorizationLevel() const
74 {
75     return m_languageGroup.readEntry("localColorization", m_localColorizationLevel);
76 }
77 
automaticCompletionEnabled() const78 bool CompletionSettings::automaticCompletionEnabled() const
79 {
80     return m_languageGroup.readEntry("Automatic Invocation", m_automatic);
81 }
82 
completionLevel() const83 ICompletionSettings::CompletionLevel CompletionSettings::completionLevel() const
84 {
85     const QString level = m_languageGroup.readEntry("completionDetail", completionLevelToString(m_level));
86 
87     for (int i = 0; i < ICompletionSettings::LAST_LEVEL; i++) {
88         if (completionLevelToString(static_cast<CompletionLevel>(i)) == level) {
89             return static_cast<CompletionLevel>(i);
90         }
91     }
92     return m_level;
93 }
94 
CompletionSettings()95 CompletionSettings::CompletionSettings()
96     : m_todoMarkerWords(QStringLiteral("TODO FIXME"))
97     , m_languageGroup(KSharedConfig::openConfig(), "Language Support"){}
98 }
99