From 67b0d9be2e9d00a83fdf3e607986e7ad13d60cb9 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 6 Feb 2019 10:52:32 +0100 Subject: [PATCH] TextEditor: return all definitions for a file name/mimetype/document Change-Id: Ifd4ee9ab71b95a66cf11e30e2de688d421094a4a Reviewed-by: Christian Stenger --- src/plugins/texteditor/highlighter.cpp | 21 +++++++++++++++++++++ src/plugins/texteditor/highlighter.h | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/src/plugins/texteditor/highlighter.cpp b/src/plugins/texteditor/highlighter.cpp index 5c88110b8a6..c88a5aacb59 100644 --- a/src/plugins/texteditor/highlighter.cpp +++ b/src/plugins/texteditor/highlighter.cpp @@ -121,6 +121,27 @@ Highlighter::Definition Highlighter::definitionForFileName(const QString &fileNa return highlightRepository()->definitionForFileName(fileName); } +Highlighter::Definitions Highlighter::definitionsForDocument(const TextDocument *document) +{ + const Utils::MimeType mimeType = Utils::mimeTypeForName(document->mimeType()); + Definitions definitions; + if (mimeType.isValid()) + definitions = Highlighter::definitionsForMimeType(mimeType.name()); + if (definitions.isEmpty()) + definitions = Highlighter::definitionsForFileName(document->filePath().fileName()); + return definitions; +} + +Highlighter::Definitions Highlighter::definitionsForMimeType(const QString &mimeType) +{ + return highlightRepository()->definitionsForMimeType(mimeType).toList(); +} + +Highlighter::Definitions Highlighter::definitionsForFileName(const QString &fileName) +{ + return highlightRepository()->definitionsForFileName(fileName).toList(); +} + void Highlighter::addCustomHighlighterPath(const Utils::FileName &path) { highlightRepository()->addCustomSearchPath(path.toString()); diff --git a/src/plugins/texteditor/highlighter.h b/src/plugins/texteditor/highlighter.h index 22fd23b26fe..cec2b0fb698 100644 --- a/src/plugins/texteditor/highlighter.h +++ b/src/plugins/texteditor/highlighter.h @@ -40,12 +40,17 @@ class Highlighter : public SyntaxHighlighter, public KSyntaxHighlighting::Abstra { public: using Definition = KSyntaxHighlighting::Definition; + using Definitions = QList; Highlighter(); static Definition definitionForDocument(const TextDocument *document); static Definition definitionForMimeType(const QString &mimeType); static Definition definitionForFileName(const QString &fileName); + static Definitions definitionsForDocument(const TextDocument *document); + static Definitions definitionsForMimeType(const QString &mimeType); + static Definitions definitionsForFileName(const QString &fileName); + static void addCustomHighlighterPath(const Utils::FileName &path); static void updateDefinitions(std::function callback = nullptr);