diff --git a/autotests/syntaxrepository_test.cpp b/autotests/syntaxrepository_test.cpp --- a/autotests/syntaxrepository_test.cpp +++ b/autotests/syntaxrepository_test.cpp @@ -148,6 +148,25 @@ QCOMPARE(def.foldingIgnoreList(), QStringList() << QLatin1String("(?:\\s+|\\s*#.*)")); } + void testFormatData() + { + auto def = m_repo.definitionForName(QLatin1String("ChangeLog")); + QVERIFY(def.isValid()); + auto formats = def.formats(); + QVERIFY(!formats.isEmpty()); + + QStringList formatNames; + foreach (const auto & format, formats) { + formatNames.append(format.name()); + } + QVERIFY(formatNames.contains(QStringLiteral("Normal Text"))); + QVERIFY(formatNames.contains(QStringLiteral("Name"))); + QVERIFY(formatNames.contains(QStringLiteral("E-Mail"))); + QVERIFY(formatNames.contains(QStringLiteral("Date"))); + QVERIFY(formatNames.contains(QStringLiteral("Entry"))); + QVERIFY(!formatNames.contains(QStringLiteral("Does not Exist"))); + } + void testReload() { auto def = m_repo.definitionForName(QLatin1String("QML")); diff --git a/src/lib/definition.h b/src/lib/definition.h --- a/src/lib/definition.h +++ b/src/lib/definition.h @@ -172,6 +172,11 @@ */ QStringList foldingIgnoreList() const; + /** + * Returns a list of all Format items used by this definition. + */ + QVector formats() const; + private: friend class DefinitionData; friend class DefinitionRef; diff --git a/src/lib/definition.cpp b/src/lib/definition.cpp --- a/src/lib/definition.cpp +++ b/src/lib/definition.cpp @@ -186,6 +186,12 @@ return d->foldingIgnoreList; } +QVector Definition::formats() const +{ + d->load(); + return QVector::fromList(d->formats.values()); +} + Context* DefinitionData::initialContext() const { Q_ASSERT(!contexts.isEmpty()); diff --git a/src/lib/repository.h b/src/lib/repository.h --- a/src/lib/repository.h +++ b/src/lib/repository.h @@ -40,6 +40,7 @@ class Definition; class RepositoryPrivate; class Theme; +class Format; /** * @brief Syntax highlighting repository. diff --git a/src/lib/repository.cpp b/src/lib/repository.cpp --- a/src/lib/repository.cpp +++ b/src/lib/repository.cpp @@ -21,6 +21,7 @@ #include "definition_p.h" #include "theme.h" #include "themedata_p.h" +#include "format.h" #include "ksyntaxhighlighting_logging.h" #include "wildcardmatcher_p.h" diff --git a/src/lib/repository_p.h b/src/lib/repository_p.h --- a/src/lib/repository_p.h +++ b/src/lib/repository_p.h @@ -46,6 +46,8 @@ quint16 foldingRegionId(const QString &defName, const QString &foldName); quint16 nextFormatId(); + void registerFormat(Format & format); + Format formatFromId(quint16 id) const; QVector m_customSearchPaths; @@ -57,6 +59,7 @@ QHash, quint16> m_foldingRegionIds; quint16 m_foldingRegionId; quint16 m_formatId; + QHash m_formatIds; }; }