From 81d40def56cbeaa8b908c783084f1adc3b8e51ec Mon Sep 17 00:00:00 2001
From: Leandro Melo <leandro.melo@nokia.com>
Date: Wed, 29 Sep 2010 13:52:58 +0200
Subject: [PATCH] Generic highlighter: Create default dir for definitions on
 user's area (at runtime).

---
 share/qtcreator/generic-highlighter/README    |  2 --
 share/qtcreator/static.pro                    |  2 +-
 .../highlightersettings.cpp                   | 19 +++++++++++++------
 .../generichighlighter/highlightersettings.h  |  3 ++-
 4 files changed, 16 insertions(+), 10 deletions(-)
 delete mode 100644 share/qtcreator/generic-highlighter/README

diff --git a/share/qtcreator/generic-highlighter/README b/share/qtcreator/generic-highlighter/README
deleted file mode 100644
index eb1647a377b..00000000000
--- a/share/qtcreator/generic-highlighter/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This is Creator's default directory for syntax highlight definitions.
-You can download them through the Generic Highlighter options dialog.
diff --git a/share/qtcreator/static.pro b/share/qtcreator/static.pro
index 267dc6c6975..ddc10bab704 100644
--- a/share/qtcreator/static.pro
+++ b/share/qtcreator/static.pro
@@ -35,7 +35,7 @@ DATA_DIRS = \
     qmlicons \
     qml \
     qml-type-descriptions \
-    generic-highlighter
+    qmljsdebugger
 
 !isEmpty(copydata) {
 
diff --git a/src/plugins/texteditor/generichighlighter/highlightersettings.cpp b/src/plugins/texteditor/generichighlighter/highlightersettings.cpp
index ec6c59ab566..2298df67aa5 100644
--- a/src/plugins/texteditor/generichighlighter/highlightersettings.cpp
+++ b/src/plugins/texteditor/generichighlighter/highlightersettings.cpp
@@ -34,9 +34,9 @@
 #include <QtCore/QSettings>
 #include <QtCore/QLatin1String>
 #include <QtCore/QLatin1Char>
-#include <QtCore/QDebug>
-#ifdef Q_OS_UNIX
 #include <QtCore/QDir>
+#include <QtCore/QFile>
+#ifdef Q_OS_UNIX
 #include <QtCore/QProcess>
 #endif
 
@@ -135,8 +135,7 @@ void HighlighterSettings::fromSettings(const QString &category, QSettings *s)
     s->beginGroup(group);
     m_definitionFilesPath = s->value(kDefinitionFilesPath, QString()).toString();
     if (!s->contains(kDefinitionFilesPath))
-        m_definitionFilesPath = Core::ICore::instance()->resourcePath() +
-                                QLatin1String("/generic-highlighter");
+        assignDefaultDefinitionsPath();
     else
         m_definitionFilesPath = s->value(kDefinitionFilesPath).toString();
     if (!s->contains(kFallbackDefinitionFilesPath)) {
@@ -151,7 +150,7 @@ void HighlighterSettings::fromSettings(const QString &category, QSettings *s)
     }
     m_alertWhenNoDefinition = s->value(kAlertWhenDefinitionIsNotFound, true).toBool();
     if (!s->contains(kIgnoredFilesPatterns))
-        assignInitialIgnoredPatterns();
+        assignDefaultIgnoredPatterns();
     else
         setIgnoredFilesPatterns(s->value(kIgnoredFilesPatterns, QString()).toString());
     s->endGroup();
@@ -167,7 +166,7 @@ QString HighlighterSettings::ignoredFilesPatterns() const
     return listFromExpressions().join(QLatin1String(","));
 }
 
-void HighlighterSettings::assignInitialIgnoredPatterns()
+void HighlighterSettings::assignDefaultIgnoredPatterns()
 {
     QStringList patterns;
     patterns << QLatin1String("*.txt")
@@ -180,6 +179,14 @@ void HighlighterSettings::assignInitialIgnoredPatterns()
     setExpressionsFromList(patterns);
 }
 
+void HighlighterSettings::assignDefaultDefinitionsPath()
+{
+    const QString &path =
+        Core::ICore::instance()->userResourcePath() + QLatin1String("/generic-highlighter");
+    if (QFile::exists(path) || QDir().mkpath(path))
+        m_definitionFilesPath = path;
+}
+
 bool HighlighterSettings::isIgnoredFilePattern(const QString &fileName) const
 {
     foreach (const QRegExp &regExp, m_ignoredFiles)
diff --git a/src/plugins/texteditor/generichighlighter/highlightersettings.h b/src/plugins/texteditor/generichighlighter/highlightersettings.h
index e3fb4ca75a7..0fbbe7e3eda 100644
--- a/src/plugins/texteditor/generichighlighter/highlightersettings.h
+++ b/src/plugins/texteditor/generichighlighter/highlightersettings.h
@@ -68,7 +68,8 @@ public:
     bool equals(const HighlighterSettings &highlighterSettings) const;
 
 private:
-    void assignInitialIgnoredPatterns();
+    void assignDefaultIgnoredPatterns();
+    void assignDefaultDefinitionsPath();
 
     void setExpressionsFromList(const QStringList &patterns);
     QStringList listFromExpressions() const;
-- 
GitLab