X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=b7848311b85a6a10450572285cab072a7bcf0f94;hb=53f8d6d6d373460bdcfebd20d6f826e3915c84ff;hp=f7bc1c7571042f116d4922eacfa37331fa09b857;hpb=d79225ae987164c59d92621f5f7de203d3179c4c;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index f7bc1c7571..b7848311b8 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -188,7 +188,7 @@ struct LyX::Impl { bool first_start; /// the parsed command line batch command if any vector batch_commands; - + /// LaTeXFonts * latexfonts_; @@ -272,7 +272,7 @@ int LyX::exec(int & argc, char * argv[]) try { init_package(os::utf8_argv(0), string(), string()); // we do not get to this point when init_package throws an exception - locale_init(); + setLocale(); } catch (ExceptionMessage const & message) { LYXERR(Debug::LOCALE, message.title_ + ", " + message.details_); } @@ -294,7 +294,7 @@ int LyX::exec(int & argc, char * argv[]) // Reinit the messages machinery in case package() knows // something interesting about the locale directory. - Messages::init(); + setLocale(); if (!use_gui) { // FIXME: create a ConsoleApplication @@ -337,7 +337,7 @@ int LyX::exec(int & argc, char * argv[]) // Reestablish our defaults, as Qt overwrites them // after createApplication() - locale_init(); + setLocale();//??? // Parse and remove all known arguments in the LyX singleton // Give an error for all remaining ones. @@ -736,6 +736,18 @@ bool LyX::init() if (!setEnv("LyXDir", lyx_dir)) LYXERR(Debug::INIT, "\t... failed!"); + if (package().explicit_user_support() && getEnv(LYX_USERDIR_VER).empty()) { + // -userdir was given on the command line. + // Make it available to child processes, otherwise tex2lyx + // would not find all layout files, and other converters might + // use it as well. + string const user_dir = package().user_support().absFileName(); + LYXERR(Debug::INIT, "Setting " LYX_USERDIR_VER "... to \"" + << user_dir << '"'); + if (!setEnv(LYX_USERDIR_VER, user_dir)) + LYXERR(Debug::INIT, "\t... failed!"); + } + // // Read configuration files // @@ -755,8 +767,15 @@ bool LyX::init() prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix)); // Check that user LyX directory is ok. - if (queryUserLyXDir(package().explicit_user_support())) - reconfigureUserLyXDir(); + { + string const lock_file = package().user_support().absFileName() + ".lyx_configure_lock"; + int fd = fileLock(lock_file.c_str()); + + if (queryUserLyXDir(package().explicit_user_support())) { + reconfigureUserLyXDir(); + } + fileUnlock(fd, lock_file.c_str()); + } if (!use_gui) { // No need for a splash when there is no GUI @@ -794,6 +813,9 @@ bool LyX::init() if (!readRcFile("preferences", true)) return false; + // The language may have been set to someting useful through prefs + setLocale(); + if (!readEncodingsFile("encodings", "unicodesymbols")) return false; if (!readLanguagesFile("languages")) @@ -823,6 +845,7 @@ bool LyX::init() lyxrc.print(); os::windows_style_tex_paths(lyxrc.windows_style_tex_paths); + // Prepend path prefix a second time to take the user preferences into a account if (!lyxrc.path_prefix.empty()) prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix)); @@ -1066,7 +1089,8 @@ int parse_version(string const &, string const &, string &) { cout << "LyX " << lyx_version << " (" << lyx_release_date << ")" << endl; - cout << "Built on " << __DATE__ << ", " << __TIME__ << endl; + cout << to_utf8(bformat(_("Built on %1$s[[date]], %2$s[[time]]"), + from_ascii(__DATE__), from_ascii(__TIME__))) << endl; cout << lyx_version_info << endl; exit(0); @@ -1378,19 +1402,7 @@ Messages const & getMessages(string const & language) Messages const & getGuiMessages() { LAPPERR(singleton_); - // A cache to translate full language name to language code - static string last_language = "auto"; - static string code; - if (lyxrc.gui_language != last_language) { - if (lyxrc.gui_language == "auto") - code.clear(); - else { - Language const * l = languages.getLanguage(lyxrc.gui_language); - code = l ? l->code() : string(); - } - last_language = lyxrc.gui_language; - } - return singleton_->messages(code); + return singleton_->messages(Messages::guiLanguage()); }