From e4fada8c5712b2bccda662d716a6de11bbfdc891 Mon Sep 17 00:00:00 2001 From: Stephan Witt Date: Wed, 3 Jun 2015 22:09:20 +0200 Subject: [PATCH] #7896: LyX templates folder is empty - create a symlink to system templates in user template directory at run time --- src/LyX.cpp | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/src/LyX.cpp b/src/LyX.cpp index d70c6b0223..c3d84b22f6 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -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(); -- 2.39.2