diff options
author | David Schulz <david.schulz@qt.io> | 2019-02-06 09:40:40 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-02-07 13:48:34 +0000 |
commit | c02ceb180eb99afd47db8c45a525f40d95d2a627 (patch) | |
tree | 2adf5f1dbedefd30256607e7d8a6cb2f6b878a57 /src/libs/3rdparty | |
parent | 499ccca115b9ad1a03fcb4f4a8b8e1052915a995 (diff) |
Syntax Highlighter: return all definitions for a file name/mimetype
Can be used to create user controls to switch between
multiple definitions for a file or mime type.
Change-Id: I5fd3744db1e819d0d6f8448a53adaf9d2c7c168d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs/3rdparty')
-rw-r--r-- | src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp | 17 | ||||
-rw-r--r-- | src/libs/3rdparty/syntax-highlighting/src/lib/repository.h | 12 |
2 files changed, 25 insertions, 4 deletions
diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp index 6b2fabd07ad..922225a7e1b 100644 --- a/src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp @@ -78,7 +78,7 @@ Definition Repository::definitionForName(const QString& defName) const return d->m_defs.value(defName); } -static Definition bestCandidate(QVector<Definition>& candidates) +static Definition bestCandidate(QVector<Definition> &&candidates) { if (candidates.isEmpty()) return Definition(); @@ -92,6 +92,11 @@ static Definition bestCandidate(QVector<Definition>& candidates) Definition Repository::definitionForFileName(const QString& fileName) const { + return bestCandidate(definitionsForFileName(fileName)); +} + +QVector<Definition> Repository::definitionsForFileName(const QString &fileName) const +{ QFileInfo fi(fileName); const auto name = fi.fileName(); @@ -106,11 +111,16 @@ Definition Repository::definitionForFileName(const QString& fileName) const } } - return bestCandidate(candidates); + return candidates; } Definition Repository::definitionForMimeType(const QString& mimeType) const { + return bestCandidate(definitionsForMimeType(mimeType)); +} + +QVector<Definition> Repository::definitionsForMimeType(const QString &mimeType) const +{ QVector<Definition> candidates; for (auto it = d->m_defs.constBegin(); it != d->m_defs.constEnd(); ++it) { auto def = it.value(); @@ -121,8 +131,7 @@ Definition Repository::definitionForMimeType(const QString& mimeType) const } } } - - return bestCandidate(candidates); + return candidates; } QVector<Definition> Repository::definitions() const diff --git a/src/libs/3rdparty/syntax-highlighting/src/lib/repository.h b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.h index c35da5ec376..e4e9bed69f7 100644 --- a/src/libs/3rdparty/syntax-highlighting/src/lib/repository.h +++ b/src/libs/3rdparty/syntax-highlighting/src/lib/repository.h @@ -167,6 +167,13 @@ public: Definition definitionForFileName(const QString &fileName) const; /** + * Returns all Definition%s for the file named @p fileName. + * The match is performed based on the \e extensions and @e mimetype of + * the definition files. + */ + QVector<Definition> definitionsForFileName(const QString &fileName) const; + + /** * Returns the best matching Definition to the type named @p mimeType * * If no match is found, Definition::isValid() of the returned instance @@ -177,6 +184,11 @@ public: Definition definitionForMimeType(const QString &mimeType) const; /** + * Returns all Definition%s to the type named @p mimeType + */ + QVector<Definition> definitionsForMimeType(const QString &mimeType) const; + + /** * Returns all available Definition%s. * Definition%ss are ordered by translated section and translated names, * for consistent displaying. |