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 }