File indexing completed on 2024-05-12 04:02:21

0001 /*
0002     SPDX-FileCopyrightText: 2018 Eike Hein <hein@kde.org>
0003     SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
0004 
0005     SPDX-License-Identifier: MIT
0006 */
0007 
0008 #include "kquicksyntaxhighlightingplugin.h"
0009 #include "kquicksyntaxhighlighter.h"
0010 
0011 #include <KSyntaxHighlighting/Definition>
0012 #include <KSyntaxHighlighting/Repository>
0013 #include <KSyntaxHighlighting/Theme>
0014 
0015 #include <memory>
0016 
0017 using namespace KSyntaxHighlighting;
0018 
0019 Repository *defaultRepository()
0020 {
0021     static std::unique_ptr<Repository> s_instance;
0022     if (!s_instance) {
0023         s_instance = std::make_unique<Repository>();
0024     }
0025     return s_instance.get();
0026 }
0027 
0028 void KQuickSyntaxHighlightingPlugin::registerTypes(const char *uri)
0029 {
0030     Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.syntaxhighlighting"));
0031     qRegisterMetaType<Definition>();
0032     qRegisterMetaType<QList<Definition>>();
0033     qRegisterMetaType<Theme>();
0034     qRegisterMetaType<QList<Theme>>();
0035     qmlRegisterType<KQuickSyntaxHighlighter>(uri, 1, 0, "SyntaxHighlighter");
0036     qmlRegisterUncreatableMetaObject(Definition::staticMetaObject, uri, 1, 0, "Definition", {});
0037     qmlRegisterUncreatableMetaObject(Theme::staticMetaObject, uri, 1, 0, "Theme", {});
0038     qmlRegisterSingletonType<Repository>(uri, 1, 0, "Repository", [](auto engine, auto scriptEngine) {
0039         (void)engine;
0040         auto repo = defaultRepository();
0041         scriptEngine->setObjectOwnership(repo, QJSEngine::CppOwnership);
0042         return defaultRepository();
0043     });
0044 }
0045 
0046 #include "moc_kquicksyntaxhighlightingplugin.cpp"