X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Fos_unix.cpp;h=b85bdb20cd4788ec8dfbeeb762983db100404c52;hb=19024f725533b3dcdeddc318119e1379eb2c6837;hp=8727cff2b7412645559e2307098159c8fd14a45f;hpb=3efc6385d7f6dbad8175411e74407c95e49b3881;p=lyx.git diff --git a/src/support/os_unix.cpp b/src/support/os_unix.cpp index 8727cff2b7..b85bdb20cd 100644 --- a/src/support/os_unix.cpp +++ b/src/support/os_unix.cpp @@ -12,9 +12,13 @@ #include +#include "LyXRC.h" + #include "support/os.h" #include "support/docstring.h" +#include "support/environment.h" #include "support/FileName.h" +#include "support/filetools.h" #include "support/lstrings.h" #include "support/lassert.h" @@ -22,7 +26,7 @@ #include #ifdef __APPLE__ -#include +#include #endif using namespace std; @@ -47,7 +51,7 @@ void init(int argc, char * argv[]) string utf8_argv(int i) { - LASSERT(i < argc_, /**/); + LASSERT(i < argc_, return ""); return to_utf8(from_local8bit(argv_[i])); } @@ -176,6 +180,12 @@ string latex_path(string const & p) } +string latex_path_list(string const & p) +{ + return p; +} + + bool is_valid_strftime(string const & p) { string::size_type pos = p.find_first_of('%'); @@ -212,13 +222,7 @@ shell_type shell() } -int timeout_min() -{ - return 3; -} - - -char path_separator() +char path_separator(path_type) { return ':'; } @@ -258,7 +262,8 @@ bool canAutoOpenFile(string const & ext, auto_open_mode const mode) } -bool autoOpenFile(string const & filename, auto_open_mode const mode) +bool autoOpenFile(string const & filename, auto_open_mode const mode, + string const & path) { #ifdef __APPLE__ // Reference: http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/ @@ -279,6 +284,13 @@ bool autoOpenFile(string const & filename, auto_open_mode const mode) if (status == kLSApplicationNotFoundErr) return false; + string const texinputs = os::latex_path_list( + replaceCurdirPath(path, lyxrc.texinputs_prefix)); + string const oldval = getEnv("TEXINPUTS"); + string const newval = ".:" + texinputs + ":" + oldval; + if (!path.empty() && !lyxrc.texinputs_prefix.empty()) + setEnv("TEXINPUTS", newval); + LSLaunchFSRefSpec inLaunchSpec; inLaunchSpec.appRef = &outAppRef; inLaunchSpec.numDocs = 1; @@ -288,11 +300,15 @@ bool autoOpenFile(string const & filename, auto_open_mode const mode) inLaunchSpec.asyncRefCon = NULL; status = LSOpenFromRefSpec(&inLaunchSpec, NULL); + if (!path.empty() && !lyxrc.texinputs_prefix.empty()) + setEnv("TEXINPUTS", oldval); + return status != kLSApplicationNotFoundErr; #else // silence compiler warnings (void)filename; (void)mode; + (void)path; // currently, no default viewer is tried for non-windows system // support for KDE/Gnome/Macintosh may be added later