File indexing completed on 2024-05-05 04:01:43

0001 /*
0002     SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: MIT
0005 */
0006 
0007 #include <QApplication>
0008 #include <QCommandLineParser>
0009 #include <QDebug>
0010 #include <QPlainTextEdit>
0011 
0012 #include <KSyntaxHighlighting/Definition>
0013 #include <KSyntaxHighlighting/FoldingRegion>
0014 #include <KSyntaxHighlighting/Repository>
0015 #include <KSyntaxHighlighting/SyntaxHighlighter>
0016 #include <KSyntaxHighlighting/Theme>
0017 
0018 int main(int argc, char **argv)
0019 {
0020     QApplication app(argc, argv);
0021 
0022     QCommandLineParser parser;
0023     parser.addHelpOption();
0024     parser.addPositionalArgument(QStringLiteral("source"), QStringLiteral("The source file to highlight."));
0025     parser.process(app);
0026 
0027     KSyntaxHighlighting::Repository repository;
0028     for (const QString &file : parser.positionalArguments()) {
0029         const auto url = QUrl::fromUserInput(file, {}, QUrl::UserInputResolutionOption::AssumeLocalFile);
0030         QFile f(url.toLocalFile());
0031         if (!f.open(QIODevice::ReadOnly))
0032             continue;
0033 
0034         auto view = new QPlainTextEdit();
0035         view->setPlainText(QString::fromUtf8(f.readAll()));
0036         view->resize(500, 500);
0037 
0038         auto highlighter = new KSyntaxHighlighting::SyntaxHighlighter(view->document());
0039         highlighter->setTheme((view->palette().color(QPalette::Base).lightness() < 128) ? repository.defaultTheme(KSyntaxHighlighting::Repository::DarkTheme)
0040                                                                                         : repository.defaultTheme(KSyntaxHighlighting::Repository::LightTheme));
0041 
0042         const auto def = repository.definitionForFileName(url.toLocalFile());
0043         highlighter->setDefinition(def);
0044 
0045         view->show();
0046     }
0047 
0048     return app.exec();
0049 }