diff --git a/autotests/syntaxrepository_test.cpp b/autotests/syntaxrepository_test.cpp --- a/autotests/syntaxrepository_test.cpp +++ b/autotests/syntaxrepository_test.cpp @@ -94,15 +94,15 @@ foreach (const auto &def, m_repo.definitions()) { QVERIFY(!def.name().isEmpty()); QVERIFY(!def.translatedName().isEmpty()); - QVERIFY(!def.section().isEmpty()); - QVERIFY(!def.translatedSection().isEmpty()); + QVERIFY(!def.isValid() || !def.section().isEmpty()); + QVERIFY(!def.isValid() || !def.translatedSection().isEmpty()); // indirectly trigger loading, as we can't reach that from public API // if the loading fails the highlighter will produce empty states NullHighlighter hl; State initialState; hl.setDefinition(def); const auto state = hl.highlightLine(QLatin1String("This should not crash } ] ) !"), initialState); - QVERIFY(state != initialState); + QVERIFY(!def.isValid() || state != initialState); } } @@ -264,8 +264,7 @@ Definition def; QVERIFY(!def.isValid()); QVERIFY(def.filePath().isEmpty()); - QVERIFY(def.name().isEmpty()); - QVERIFY(def.translatedName().isEmpty()); + QCOMPARE(def.name(), QLatin1String("None")); QVERIFY(def.section().isEmpty()); QVERIFY(def.translatedSection().isEmpty()); QVERIFY(def.mimeTypes().isEmpty()); diff --git a/autotests/testhighlighter.cpp b/autotests/testhighlighter.cpp --- a/autotests/testhighlighter.cpp +++ b/autotests/testhighlighter.cpp @@ -105,7 +105,7 @@ int count = 0; foreach (const auto &def, m_repo->definitions()) { - if (def.isHidden()) + if (def.isHidden() || !def.isValid()) continue; ++count; if (m_coveredDefinitions.contains(def.name())) diff --git a/examples/codeeditor.cpp b/examples/codeeditor.cpp --- a/examples/codeeditor.cpp +++ b/examples/codeeditor.cpp @@ -129,11 +129,7 @@ auto hlActionGroup = new QActionGroup(menu); hlActionGroup->setExclusive(true); auto hlGroupMenu = menu->addMenu(QStringLiteral("Syntax")); - auto noHlAction = hlGroupMenu->addAction(QStringLiteral("None")); - noHlAction->setCheckable(true); - hlActionGroup->addAction(noHlAction); - noHlAction->setChecked(!m_highlighter->definition().isValid()); - QMenu *hlSubMenu = nullptr; + QMenu *hlSubMenu = hlGroupMenu; QString currentGroup; foreach (const auto &def, m_repository.definitions()) { if (def.isHidden()) diff --git a/src/lib/definition_p.h b/src/lib/definition_p.h --- a/src/lib/definition_p.h +++ b/src/lib/definition_p.h @@ -84,7 +84,7 @@ QString multiLineCommentEndMarker; QString fileName; - QString name; + QString name = QStringLiteral(QT_TRANSLATE_NOOP("Syntax highlighting", "None")); QString section; QString style; QString indenter; diff --git a/src/lib/repository.cpp b/src/lib/repository.cpp --- a/src/lib/repository.cpp +++ b/src/lib/repository.cpp @@ -122,6 +122,9 @@ void RepositoryPrivate::load(Repository *repo) { + // always add invalid default "None" highlighting + addDefinition(Definition()); + auto dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("org.kde.syntax-highlighting/syntax"), QStandardPaths::LocateDirectory); foreach (const auto &dir, dirs) loadSyntaxFolder(repo, dir);