aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/syntax-highlighting
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-02-06 09:40:40 +0100
committerDavid Schulz <david.schulz@qt.io>2019-02-07 13:48:34 +0000
commitc02ceb180eb99afd47db8c45a525f40d95d2a627 (patch)
tree2adf5f1dbedefd30256607e7d8a6cb2f6b878a57 /src/libs/3rdparty/syntax-highlighting
parent499ccca115b9ad1a03fcb4f4a8b8e1052915a995 (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/syntax-highlighting')
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/repository.cpp17
-rw-r--r--src/libs/3rdparty/syntax-highlighting/src/lib/repository.h12
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 6b2fabd07a..922225a7e1 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 c35da5ec37..e4e9bed69f 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.