diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro index 94d49be3acef393abab1b2cc421aa8850178433a..222fef4dfa79f9d385430ca73b73f9c73fd94c49 100644 --- a/share/qtcreator/static.pro +++ b/share/qtcreator/static.pro @@ -36,7 +36,8 @@ DATA_DIRS = \ qmlicons \ qml \ qml-type-descriptions \ - qmljsdebugger + qmljsdebugger \ + generic-highlighter !isEmpty(copydata) { diff --git a/src/plugins/texteditor/generichighlighter/highlightersettings.cpp b/src/plugins/texteditor/generichighlighter/highlightersettings.cpp index 2298df67aa52890c3f5d822a3a8c021c5a291eda..22c76d789d00e8fdce104178579f1d4df575e9b7 100644 --- a/src/plugins/texteditor/generichighlighter/highlightersettings.cpp +++ b/src/plugins/texteditor/generichighlighter/highlightersettings.cpp @@ -36,6 +36,7 @@ #include <QtCore/QLatin1Char> #include <QtCore/QDir> #include <QtCore/QFile> +#include <QtCore/QStringList> #ifdef Q_OS_UNIX #include <QtCore/QProcess> #endif @@ -43,8 +44,11 @@ namespace TextEditor { namespace Internal { -QString findDefinitionsLocation() +QString findFallbackDefinitionsLocation() { + QDir dir; + dir.setNameFilters(QStringList(QLatin1String("*.xml"))); + #ifdef Q_OS_UNIX static const QLatin1String kateSyntax[] = { QLatin1String("/share/apps/katepart/syntax"), @@ -54,7 +58,6 @@ QString findDefinitionsLocation() sizeof(kateSyntax) / sizeof(kateSyntax[0]); // Some wild guesses. - QDir dir; for (int i = 0; i < kateSyntaxCount; ++i) { QStringList paths; paths << QLatin1String("/usr") + kateSyntax[i] @@ -62,7 +65,7 @@ QString findDefinitionsLocation() << QLatin1String("/opt") + kateSyntax[i]; foreach (const QString &path, paths) { dir.setPath(path); - if (dir.exists()) + if (dir.exists() && !dir.entryInfoList().isEmpty()) return dir.path(); } } @@ -79,13 +82,17 @@ QString findDefinitionsLocation() output.remove(QLatin1Char('\n')); for (int i = 0; i < kateSyntaxCount; ++i) { dir.setPath(output + kateSyntax[i]); - if (dir.exists()) + if (dir.exists() && !dir.entryInfoList().isEmpty()) return dir.path(); } } } #endif + dir.setPath(Core::ICore::instance()->resourcePath() + QLatin1String("/generic-highlighter")); + if (dir.exists() && !dir.entryInfoList().isEmpty()) + return dir.path(); + return QString(); } @@ -139,7 +146,7 @@ void HighlighterSettings::fromSettings(const QString &category, QSettings *s) else m_definitionFilesPath = s->value(kDefinitionFilesPath).toString(); if (!s->contains(kFallbackDefinitionFilesPath)) { - m_fallbackDefinitionFilesPath = findDefinitionsLocation(); + m_fallbackDefinitionFilesPath = findFallbackDefinitionsLocation(); if (m_fallbackDefinitionFilesPath.isEmpty()) m_useFallbackLocation = false; else diff --git a/src/plugins/texteditor/generichighlighter/highlightersettings.h b/src/plugins/texteditor/generichighlighter/highlightersettings.h index 0fbbe7e3eda22bffae3b4834dce9adfa7e5055e2..323cf833ac359a133e8875dec86f145ac38b96aa 100644 --- a/src/plugins/texteditor/generichighlighter/highlightersettings.h +++ b/src/plugins/texteditor/generichighlighter/highlightersettings.h @@ -88,7 +88,7 @@ inline bool operator!=(const HighlighterSettings &a, const HighlighterSettings & { return !a.equals(b); } namespace Internal { -QString findDefinitionsLocation(); +QString findFallbackDefinitionsLocation(); } } // namespace TextEditor diff --git a/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp b/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp index 44eddbfc7953fba3eb768f71fa791df495ece7eb..ffa8086225392ded35315987574023bb2241a2a8 100644 --- a/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp +++ b/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp @@ -171,7 +171,7 @@ void HighlighterSettingsPage::settingsToUI() void HighlighterSettingsPage::resetDefinitionsLocation() { - const QString &location = findDefinitionsLocation(); + const QString &location = findFallbackDefinitionsLocation(); if (location.isEmpty()) QMessageBox::information(0, tr("Autodetect Definitions"), tr("No pre-installed definitions could be found."));