]> git.lyx.org Git - lyx.git/commitdiff
#7896: LyX templates folder is empty - create a symlink to system templates in user...
authorStephan Witt <switt@lyx.org>
Wed, 3 Jun 2015 20:09:20 +0000 (22:09 +0200)
committerStephan Witt <switt@lyx.org>
Tue, 23 Jun 2015 06:41:43 +0000 (08:41 +0200)
src/LyX.cpp

index d70c6b02238fd4d230e4026969369f581a2f1f49..c3d84b22f614d2c636cd18a1990313d679e15386 100644 (file)
@@ -779,6 +779,43 @@ void cleanDuplicateEnvVars()
 }
 #endif
 
+
+static void initTemplatePath()
+{
+       FileName const package_template_path =
+               FileName(addPath(package().system_support().absFileName(), "templates"));
+
+       if (lyxrc.template_path.empty()) {
+               lyxrc.template_path = package_template_path.absFileName();
+       }
+#if defined (USE_MACOSX_PACKAGING)
+       FileName const user_template_path =
+               FileName(addPath(package().user_support().absFileName(), "templates"));
+
+       if (package_template_path != FileName(lyxrc.template_path) &&
+               user_template_path != FileName(lyxrc.template_path))
+       {
+               return;
+       }
+       /// addPath cannot be used here.
+       /// The path with trailing slash doesn't work as symlink name.
+       FileName const user_template_link =
+               FileName(user_template_path.absFileName() + "SystemTemplates");
+       if (user_template_link.isSymLink()) {
+               user_template_link.removeFile();
+       }
+       if (!user_template_link.exists()) {
+               if (!package_template_path.link(user_template_link)) {
+                       LYXERR(Debug::INIT, "Cannot create symlink " + user_template_link.absFileName());
+                       lyxrc.template_path = package_template_path.absFileName();
+                       return;
+               }
+       }
+       lyxrc.template_path = user_template_path.absFileName();
+#endif
+}
+
+
 bool LyX::init()
 {
 #ifdef SIGHUP
@@ -801,10 +838,7 @@ bool LyX::init()
                lyxrc.example_path = addPath(package().system_support().absFileName(),
                                              "examples");
        }
-       if (lyxrc.template_path.empty()) {
-               lyxrc.template_path = addPath(package().system_support().absFileName(),
-                                             "templates");
-       }
+       initTemplatePath();
 
        // init LyXDir environment variable
        string const lyx_dir = package().lyx_dir().absFileName();