aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/highlighter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/texteditor/highlighter.cpp')
-rw-r--r--src/plugins/texteditor/highlighter.cpp63
1 files changed, 16 insertions, 47 deletions
diff --git a/src/plugins/texteditor/highlighter.cpp b/src/plugins/texteditor/highlighter.cpp
index 29b5a8eab5..a81d66a3af 100644
--- a/src/plugins/texteditor/highlighter.cpp
+++ b/src/plugins/texteditor/highlighter.cpp
@@ -110,35 +110,6 @@ Highlighter::Highlighter()
&categoryForTextStyle);
}
-Highlighter::Definition Highlighter::definitionForDocument(const TextDocument *document)
-{
- const Utils::MimeType mimeType = Utils::mimeTypeForName(document->mimeType());
- Definition definition;
- if (mimeType.isValid())
- definition = Highlighter::definitionForMimeType(mimeType.name());
- if (!definition.isValid())
- definition = Highlighter::definitionForFilePath(document->filePath());
- return definition;
-}
-
-Highlighter::Definition Highlighter::definitionForMimeType(const QString &mimeType)
-{
- if (mimeType.isEmpty())
- return {};
- const Definitions definitions = definitionsForMimeType(mimeType);
- if (definitions.size() == 1)
- return definitions.first();
- return highlightRepository()->definitionForMimeType(mimeType);
-}
-
-Highlighter::Definition Highlighter::definitionForFilePath(const Utils::FilePath &fileName)
-{
- const Definitions definitions = definitionsForFileName(fileName);
- if (definitions.size() == 1)
- return definitions.first();
- return highlightRepository()->definitionForFileName(fileName.fileName());
-}
-
Highlighter::Definition Highlighter::definitionForName(const QString &name)
{
return highlightRepository()->definitionForName(name);
@@ -147,22 +118,20 @@ Highlighter::Definition Highlighter::definitionForName(const QString &name)
Highlighter::Definitions Highlighter::definitionsForDocument(const TextDocument *document)
{
QTC_ASSERT(document, return {});
+ // First try to find definitions for the file path, only afterwards try the MIME type.
+ // An example where that is important is if there was a definition for "*.rb.xml", which
+ // cannot be referred to with a MIME type (since there is none), but there is the definition
+ // for XML files, which specifies a MIME type in addition to a glob pattern.
+ // If we check the MIME type first and then skip the pattern, the definition for "*.rb.xml" is
+ // never considered.
+ // The KSyntaxHighlighting CLI also completely ignores MIME types.
+ const Definitions &fileNameDefinitions = definitionsForFileName(document->filePath());
+ if (!fileNameDefinitions.isEmpty())
+ return fileNameDefinitions;
const Utils::MimeType &mimeType = Utils::mimeTypeForName(document->mimeType());
- if (mimeType.isValid()) {
- if (mimeType.name() == "text/plain") {
- // text/plain is the base mime type for all text types so ignore it and try matching the
- // file name against the pattern and only if no definition can be found for the
- // file name try matching the mime type
- const Definitions &fileNameDefinitions = definitionsForFileName(document->filePath());
- if (!fileNameDefinitions.isEmpty())
- return fileNameDefinitions;
- return definitionsForMimeType(mimeType.name());
- }
- const Definitions &mimeTypeDefinitions = definitionsForMimeType(mimeType.name());
- if (!mimeTypeDefinitions.isEmpty())
- return mimeTypeDefinitions;
- }
- return definitionsForFileName(document->filePath());
+ if (!mimeType.isValid())
+ return fileNameDefinitions;
+ return definitionsForMimeType(mimeType.name());
}
static Highlighter::Definition definitionForSetting(const QString &settingsKey,
@@ -206,8 +175,8 @@ Highlighter::Definitions Highlighter::definitionsForFileName(const Utils::FilePa
return definitions;
}
-void Highlighter::rememberDefintionForDocument(const Highlighter::Definition &definition,
- const TextDocument *document)
+void Highlighter::rememberDefinitionForDocument(const Highlighter::Definition &definition,
+ const TextDocument *document)
{
QTC_ASSERT(document, return );
if (!definition.isValid())
@@ -236,7 +205,7 @@ void Highlighter::rememberDefintionForDocument(const Highlighter::Definition &de
settings->endGroup();
}
-void Highlighter::clearDefintionForDocumentCache()
+void Highlighter::clearDefinitionForDocumentCache()
{
QSettings *settings = Core::ICore::settings();
settings->beginGroup(Constants::HIGHLIGHTER_SETTINGS_CATEGORY);