X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=9b637570d5f9adb4d5071b822ee92bd129b14ed7;hb=da67bde61af6dfecef7a237b72b878fe30638a81;hp=0e1b19faf664f849a37f6add26f620fbad54e2d8;hpb=efc9720b0d5315cb4d5ab3eac4d2cbbebc392ac8;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index 0e1b19faf6..9b637570d5 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -141,7 +141,7 @@ string cl_user_support; string geometryArg; -LyX * singleton_ = 0; +LyX * singleton_ = nullptr; void showFileError(string const & error) { @@ -155,7 +155,9 @@ void showFileError(string const & error) /// The main application class private implementation. struct LyX::Impl { Impl() - : latexfonts_(0), spell_checker_(0), apple_spell_checker_(0), aspell_checker_(0), enchant_checker_(0), hunspell_checker_(0) + : latexfonts_(nullptr), spell_checker_(nullptr), + apple_spell_checker_(nullptr), aspell_checker_(nullptr), + enchant_checker_(nullptr), hunspell_checker_(nullptr) {} ~Impl() @@ -250,14 +252,14 @@ frontend::Application * theApp() if (singleton_) return singleton_->pimpl_->application_.get(); else - return 0; + return nullptr; } LyX::~LyX() { delete pimpl_; - singleton_ = 0; + singleton_ = nullptr; } @@ -397,11 +399,9 @@ int LyX::exec(int & argc, char * argv[]) if (!pimpl_->lyx_server_->deferredLoadingToOtherInstance()) exit_status = pimpl_->application_->exec(); else if (!pimpl_->files_to_load_.empty()) { - vector::const_iterator it = pimpl_->files_to_load_.begin(); - vector::const_iterator end = pimpl_->files_to_load_.end(); lyxerr << _("The following files could not be loaded:") << endl; - for (; it != end; ++it) - lyxerr << *it << endl; + for (auto const & f : pimpl_->files_to_load_) + lyxerr << f << endl; } prepareExit(); @@ -438,17 +438,16 @@ void LyX::prepareExit() // do any other cleanup procedures now if (package().temp_dir() != package().system_temp_dir()) { string const abs_tmpdir = package().temp_dir().absFileName(); - if (!contains(package().temp_dir().absFileName(), "lyx_tmpdir")) { + if (!contains(abs_tmpdir, "lyx_tmpdir")) { docstring const msg = bformat(_("%1$s does not appear like a LyX created temporary directory."), from_utf8(abs_tmpdir)); Alert::warning(_("Cannot remove temporary directory"), msg); } else { - LYXERR(Debug::INFO, "Deleting tmp dir " - << package().temp_dir().absFileName()); + LYXERR(Debug::INFO, "Deleting tmp dir " << abs_tmpdir); if (!package().temp_dir().destroyDirectory()) { LYXERR0(bformat(_("Unable to remove the temporary directory %1$s"), - from_utf8(package().temp_dir().absFileName()))); + from_utf8(abs_tmpdir))); } } } @@ -471,45 +470,39 @@ void LyX::earlyExit(int status) int LyX::init(int & argc, char * argv[]) { - try { - // check for any spurious extra arguments - // other than documents - for (int argi = 1; argi < argc ; ++argi) { - if (argv[argi][0] == '-') { - lyxerr << to_utf8( - bformat(_("Wrong command line option `%1$s'. Exiting."), - from_utf8(os::utf8_argv(argi)))) << endl; - return EXIT_FAILURE; - } - } - - // Initialization of LyX (reads lyxrc and more) - LYXERR(Debug::INIT, "Initializing LyX::init..."); - bool success = init(); - LYXERR(Debug::INIT, "Initializing LyX::init...done"); - if (!success) - return EXIT_FAILURE; - // Remaining arguments are assumed to be files to load. - for (int argi = 1; argi < argc; ++argi) - pimpl_->files_to_load_.push_back(os::utf8_argv(argi)); - - if (!use_gui && pimpl_->files_to_load_.empty()) { - lyxerr << to_utf8(_("Missing filename for this operation.")) << endl; + // check for any spurious extra arguments + // other than documents + for (int argi = 1; argi < argc ; ++argi) { + if (argv[argi][0] == '-') { + lyxerr << to_utf8( + bformat(_("Wrong command line option `%1$s'. Exiting."), + from_utf8(os::utf8_argv(argi)))) << endl; return EXIT_FAILURE; } + } - if (first_start) { - pimpl_->files_to_load_.push_back( - i18nLibFileSearch("examples", "splash.lyx").absFileName()); - } + // Initialization of LyX (reads lyxrc and more) + LYXERR(Debug::INIT, "Initializing LyX::init..."); + bool success = init(); + LYXERR(Debug::INIT, "Initializing LyX::init...done"); + if (!success) + return EXIT_FAILURE; - return EXIT_SUCCESS; + // Remaining arguments are assumed to be files to load. + for (int argi = 1; argi < argc; ++argi) + pimpl_->files_to_load_.push_back(os::utf8_argv(argi)); - } catch (exception const &e) { - // This can happen _in_theory_ in replaceEnvironmentPath - lyxerr << "Caught exception `" << e.what() << "'." << endl; + if (!use_gui && pimpl_->files_to_load_.empty()) { + lyxerr << to_utf8(_("Missing filename for this operation.")) << endl; return EXIT_FAILURE; } + + if (first_start) { + pimpl_->files_to_load_.push_back( + i18nLibFileSearch("examples", "Welcome.lyx").absFileName()); + } + + return EXIT_SUCCESS; } @@ -916,6 +909,25 @@ bool LyX::init() if (package().build_support().empty()) prependEnvPath("PATH", package().binary_dir().absFileName()); #endif + { + // Add the directory containing the dt2dv and dv2dt executables to the path + FileName dtldir; + if (!package().build_support().empty()) { + // dtl executables should be in the same dir ar tex2lyx + dtldir = package().binary_dir(); + } + else { + dtldir = FileName(addName(package().system_support().absFileName(), "extratools")); + } +#if defined(_WIN32) + string dtlexe = "dt2dv.exe"; +#else + string dtlexe = "dt2dv"; +#endif + FileName const dt2dv = FileName(addName(dtldir.absFileName(), dtlexe)); + if (dt2dv.exists()) + prependEnvPath("PATH", dtldir.absFileName()); + } if (!lyxrc.path_prefix.empty()) prependEnvPath("PATH", replaceEnvironmentPath(lyxrc.path_prefix)); @@ -996,7 +1008,7 @@ bool LyX::init() pimpl_->toplevel_keymap_.read("site"); pimpl_->toplevel_keymap_.read(lyxrc.bind_file); // load user bind file user.bind - pimpl_->toplevel_keymap_.read("user", 0, KeyMap::MissingOK); + pimpl_->toplevel_keymap_.read("user", nullptr, KeyMap::MissingOK); if (lyxerr.debugging(Debug::LYXRC)) lyxrc.print(); @@ -1627,7 +1639,7 @@ void setSpellChecker() singleton_->pimpl_->apple_spell_checker_ = new AppleSpellChecker; singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->apple_spell_checker_; #else - singleton_->pimpl_->spell_checker_ = 0; + singleton_->pimpl_->spell_checker_ = nullptr; #endif } else if (lyxrc.spellchecker == "aspell") { #if defined(USE_ASPELL) @@ -1635,7 +1647,7 @@ void setSpellChecker() singleton_->pimpl_->aspell_checker_ = new AspellChecker; singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->aspell_checker_; #else - singleton_->pimpl_->spell_checker_ = 0; + singleton_->pimpl_->spell_checker_ = nullptr; #endif } else if (lyxrc.spellchecker == "enchant") { #if defined(USE_ENCHANT) @@ -1643,7 +1655,7 @@ void setSpellChecker() singleton_->pimpl_->enchant_checker_ = new EnchantChecker; singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->enchant_checker_; #else - singleton_->pimpl_->spell_checker_ = 0; + singleton_->pimpl_->spell_checker_ = nullptr; #endif } else if (lyxrc.spellchecker == "hunspell") { #if defined(USE_HUNSPELL) @@ -1651,10 +1663,10 @@ void setSpellChecker() singleton_->pimpl_->hunspell_checker_ = new HunspellChecker; singleton_->pimpl_->spell_checker_ = singleton_->pimpl_->hunspell_checker_; #else - singleton_->pimpl_->spell_checker_ = 0; + singleton_->pimpl_->spell_checker_ = nullptr; #endif } else { - singleton_->pimpl_->spell_checker_ = 0; + singleton_->pimpl_->spell_checker_ = nullptr; } if (singleton_->pimpl_->spell_checker_) { singleton_->pimpl_->spell_checker_->changeNumber(speller_change_number);