X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=7e56d550eefbc42f1ae6e2ce825c149d075d9b55;hb=94f0968e9212f24997cfee0d17c6f060210edbc6;hp=be2c1597031d2934166b20faa9cd4c9ae7edfd4b;hpb=eb353f1b58bf5dbe5cd154d8f8a9749a4bcd377a;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index be2c159703..7e56d550ee 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -44,12 +44,11 @@ #include "Server.h" #include "ServerSocket.h" #include "Session.h" +#include "WordList.h" #include "frontends/alert.h" #include "frontends/Application.h" -#include "graphics/Previews.h" - #include "support/lassert.h" #include "support/debug.h" #include "support/environment.h" @@ -193,8 +192,6 @@ struct LyX::Impl /// the parsed command line batch command if any vector batch_commands; - /// - graphics::Previews preview_; /// SpellChecker * spell_checker_; /// @@ -221,6 +218,7 @@ LyX::~LyX() { delete pimpl_; singleton_ = 0; + WordList::cleanupWordLists(); } @@ -290,22 +288,19 @@ int LyX::exec(int & argc, char * argv[]) { // Minimal setting of locale before parsing command line try { - init_package(os::utf8_argv(0), string(), string(), - top_build_dir_is_one_level_up); + init_package(os::utf8_argv(0), string(), string()); + // we do not get to this point when init_package throws an exception + locale_init(); } catch (ExceptionMessage const & message) { LYXERR(Debug::LOCALE, message.title_ + ", " + message.details_); } - // FIXME: This breaks out of source build under Windows. - locale_init(); // Here we need to parse the command line. At least // we need to parse for "-dbg" and "-help" easyParse(argc, argv); try { - init_package(os::utf8_argv(0), - cl_system_support, cl_user_support, - top_build_dir_is_one_level_up); + init_package(os::utf8_argv(0), cl_system_support, cl_user_support); } catch (ExceptionMessage const & message) { if (message.type_ == ErrorException) { Alert::error(message.title_, message.details_); @@ -453,8 +448,7 @@ void LyX::prepareExit() // Kill the application object before exiting. This avoids crashes // when exiting on Linux. - if (pimpl_->application_) - pimpl_->application_.reset(); + pimpl_->application_.reset(); } @@ -671,7 +665,7 @@ static void error_handler(int err_sig) "hope you have not lost any data.\n" "Please read the bug-reporting instructions " "in 'Help->Introduction' and send us a bug report, " - "if necessary. Thanks !\nBye."); + "if necessary. Thanks!\nBye."); break; case SIGINT: case SIGTERM: @@ -745,6 +739,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 +764,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())) @@ -806,7 +806,7 @@ bool LyX::init() system_lcolor = lcolor; // This one is edited through the preferences dialog. - if (!readRcFile("preferences")) + if (!readRcFile("preferences", true)) return false; if (!readEncodingsFile("encodings", "unicodesymbols")) @@ -842,7 +842,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()) @@ -960,21 +960,22 @@ bool LyX::queryUserLyXDir(bool explicit_userdir) } -bool LyX::readRcFile(string const & name) +bool LyX::readRcFile(string const & name, bool check_format) { LYXERR(Debug::INIT, "About to read " << name << "... "); FileName const lyxrc_path = libFileSearch(string(), name); - if (!lyxrc_path.empty()) { - LYXERR(Debug::INIT, "Found in " << lyxrc_path); - if (!lyxrc.read(lyxrc_path)) { - showFileError(name); - return false; - } - } else { + if (lyxrc_path.empty()) { LYXERR(Debug::INIT, "Not found." << lyxrc_path); + // FIXME + // This was the previous logic, but can it be right?? + return true; } - return true; + LYXERR(Debug::INIT, "Found in " << lyxrc_path); + bool const success = lyxrc.read(lyxrc_path, check_format); + if (!success) + showFileError(name); + return success; } // Read the languages file `name' @@ -1054,6 +1055,9 @@ int parse_help(string const &, string const &, string &) " Look on Tools->Preferences->File formats->Format\n" " to get an idea which parameters should be passed.\n" " Note that the order of -e and -x switches matters.\n" + "\t-E [--export-to] fmt filename\n" + " where fmt is the export format of choice (see --export),\n" + " and filename is the destination filename.\n" "\t-i [--import] fmt file.xxx\n" " where fmt is the import format of choice\n" " and file.xxx is the file to be imported.\n" @@ -1123,6 +1127,24 @@ int parse_execute(string const & arg, string const &, string & batch) } +int parse_export_to(string const & type, string const & output_file, string & batch) +{ + if (type.empty()) { + lyxerr << to_utf8(_("Missing file type [eg latex, ps...] after " + "--export-to switch")) << endl; + exit(1); + } + if (output_file.empty()) { + lyxerr << to_utf8(_("Missing destination filename after " + "--export-to switch")) << endl; + exit(1); + } + batch = "buffer-export " + type + " " + output_file; + use_gui = false; + return 2; +} + + int parse_export(string const & type, string const &, string & batch) { if (type.empty()) { @@ -1216,8 +1238,10 @@ void LyX::easyParse(int & argc, char * argv[]) cmdmap["-userdir"] = parse_userdir; cmdmap["-x"] = parse_execute; cmdmap["--execute"] = parse_execute; - cmdmap["-e"] = parse_export; + cmdmap["-e"] = parse_export; cmdmap["--export"] = parse_export; + cmdmap["-E"] = parse_export_to; + cmdmap["--export-to"] = parse_export_to; cmdmap["-i"] = parse_import; cmdmap["--import"] = parse_import; cmdmap["-geometry"] = parse_geometry; @@ -1376,13 +1400,6 @@ Messages const & getGuiMessages() } -graphics::Previews & thePreviews() -{ - LASSERT(singleton_, /**/); - return singleton_->pimpl_->preview_; -} - - Session & theSession() { LASSERT(singleton_, /**/);