1/*
2 SPDX-FileCopyrightText: 2001-2010 Christoph Cullmann <cullmann@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#ifndef KATE_MODEMANAGER_H
8#define KATE_MODEMANAGER_H
9
10#include "ktexteditor_export.h"
11
12#include <QHash>
13#include <QPointer>
14#include <QStringList>
15
16#include <KLocalizedString>
17
18namespace KTextEditor
19{
20class Document;
21}
22
23class KateFileType
24{
25public:
26 QString name;
27 QString section;
28 QStringList wildcards;
29 QStringList mimetypes;
30 int priority = 0;
31 QString varLine;
32 QString hl;
33 bool hlGenerated = false;
34 QString version;
35 QString indenter;
36
37 QString translatedName;
38 QString translatedSection;
39
40 QString nameTranslated() const
41 {
42 return translatedName.isEmpty() ? name : translatedName;
43 }
44
45 QString sectionTranslated() const
46 {
47 return translatedSection.isEmpty() ? section : translatedSection;
48 }
49
50 KateFileType()
51
52 {
53 }
54};
55
56class KateModeManager
57{
58public:
59 KateModeManager();
60 ~KateModeManager();
61
62 KateModeManager(const KateModeManager &) = delete;
63 KateModeManager &operator=(const KateModeManager &) = delete;
64
65 /**
66 * File Type Config changed, update all docs (which will take care of views/renderers)
67 */
68 void update();
69
70 void save(const QList<KateFileType *> &v);
71
72 /**
73 * @return the right KateFileType name for the given document or an empty string if none found
74 */
75 QString fileType(KTextEditor::Document *doc, const QString &fileToReadFrom);
76
77 /**
78 * Don't store the pointer somewhere longer times, won't be valid after the next update()
79 */
80 const KateFileType &fileType(const QString &name) const;
81
82 /**
83 * Don't modify
84 */
85 const QList<KateFileType *> &list() const
86 {
87 return m_types;
88 }
89
90private:
91 friend class KateModeManagerTest;
92 friend class KateModeManagerBenchmark;
93
94 KTEXTEDITOR_EXPORT QString wildcardsFind(const QString &fileName) const; // exported for testing
95 KTEXTEDITOR_EXPORT QString mimeTypesFind(const QString &mimeTypeName) const; // exported for testing
96
97 QList<KateFileType *> m_types;
98 QHash<QString, KateFileType *> m_name2Type;
99};
100
101#endif
102

source code of ktexteditor/src/mode/katemodemanager.h