mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-25 10:58:52 +00:00
introduce the lyx_dir() of Package, automatically set LyXDir environment, correct the replaceEnvironmentPath() function (see #4177) and replace environment variables in path_prefix at runtime
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37326 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
8a84eeb27a
commit
9e16f14464
10
src/LyX.cpp
10
src/LyX.cpp
@ -745,6 +745,12 @@ bool LyX::init()
|
||||
"templates");
|
||||
}
|
||||
|
||||
// init LyXDir environment variable
|
||||
string const lyx_dir = package().lyx_dir().absFileName();
|
||||
LYXERR(Debug::INIT, "Setting LyXDir... to \"" << lyx_dir << "\"");
|
||||
if (!setEnv("LyXDir", lyx_dir))
|
||||
LYXERR(Debug::INIT, "\t... failed!");
|
||||
|
||||
//
|
||||
// Read configuration files
|
||||
//
|
||||
@ -764,7 +770,7 @@ bool LyX::init()
|
||||
prependEnvPath("PATH", package().binary_dir().absFileName());
|
||||
#endif
|
||||
if (!lyxrc.path_prefix.empty())
|
||||
prependEnvPath("PATH", lyxrc.path_prefix);
|
||||
prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix));
|
||||
|
||||
// Check that user LyX directory is ok.
|
||||
if (queryUserLyXDir(package().explicit_user_support()))
|
||||
@ -842,7 +848,7 @@ bool LyX::init()
|
||||
|
||||
os::windows_style_tex_paths(lyxrc.windows_style_tex_paths);
|
||||
if (!lyxrc.path_prefix.empty())
|
||||
prependEnvPath("PATH", lyxrc.path_prefix);
|
||||
prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix));
|
||||
|
||||
FileName const document_path(lyxrc.document_path);
|
||||
if (document_path.exists() && document_path.isDirectory())
|
||||
|
@ -116,6 +116,10 @@ Package::Package(string const & command_line_arg0,
|
||||
FileName const abs_binary = abs_path_from_binary_name(command_line_arg0);
|
||||
binary_dir_ = FileName(onlyPath(abs_binary.absFileName()));
|
||||
|
||||
// the LyX package directory
|
||||
lyx_dir_ = FileName(addPath(binary_dir_.absFileName(), "../"));
|
||||
lyx_dir_ = FileName(lyx_dir_.realPath());
|
||||
|
||||
// Is LyX being run in-place from the build tree?
|
||||
buildDirs(abs_binary, top_build_dir_location,
|
||||
build_support_dir_, system_support_dir_);
|
||||
|
@ -78,6 +78,11 @@ public:
|
||||
*/
|
||||
FileName const & lyx_binary() const { return lyx_binary_; }
|
||||
|
||||
/** The absolute path to the LyX package directory.
|
||||
* This is one level up from the binary dir.
|
||||
*/
|
||||
FileName const & lyx_dir() const { return lyx_dir_; }
|
||||
|
||||
/** The top of the LyX source code tree.
|
||||
*/
|
||||
static FileName const & top_srcdir();
|
||||
@ -142,6 +147,7 @@ public:
|
||||
private:
|
||||
FileName binary_dir_;
|
||||
FileName lyx_binary_;
|
||||
FileName lyx_dir_;
|
||||
FileName system_support_dir_;
|
||||
FileName build_support_dir_;
|
||||
FileName user_support_dir_;
|
||||
|
@ -547,23 +547,17 @@ string const replaceEnvironmentPath(string const & path)
|
||||
static regex envvar_br_re("(.*)" + envvar_br + "(.*)");
|
||||
static regex envvar_re("(.*)" + envvar + "(.*)");
|
||||
smatch what;
|
||||
string result;
|
||||
string remaining = path;
|
||||
string result = path;
|
||||
while (1) {
|
||||
regex_match(remaining, what, envvar_br_re);
|
||||
regex_match(result, what, envvar_br_re);
|
||||
if (!what[0].matched) {
|
||||
regex_match(remaining, what, envvar_re);
|
||||
regex_match(result, what, envvar_re);
|
||||
if (!what[0].matched) {
|
||||
result += remaining;
|
||||
break;
|
||||
}
|
||||
}
|
||||
string env_var = getEnv(what.str(2));
|
||||
if (!env_var.empty())
|
||||
result += what.str(1) + env_var;
|
||||
else
|
||||
result += what.str(1) + "$" + what.str(2);
|
||||
remaining = what.str(3);
|
||||
result = what.str(1) + env_var + what.str(3);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user