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."));