X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyX.cpp;h=4e97f7ae64b92286ef5aa0a3152349942c1f2e32;hb=1b6ce0e827d58258e84ba2bf0754c6b273b123db;hp=f0fc71cfe955654c8ec4b00b1d96403382f11b8b;hpb=50060053e36b3e9dfe03bc33ed3abac1eacc54b0;p=lyx.git diff --git a/src/LyX.cpp b/src/LyX.cpp index f0fc71cfe9..4e97f7ae64 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -150,7 +150,7 @@ void showFileError(string const & error) "Please check your installation."), from_utf8(error))); } -} // namespace anon +} // namespace /// The main application class private implementation. struct LyX::Impl { @@ -192,7 +192,7 @@ struct LyX::Impl { Converters converters_; /// The system converters after reading lyxrc.defaults. Converters system_converters_; - + /// Global format information Formats formats_; /// The system formats after reading lyxrc.defaults. @@ -394,7 +394,7 @@ int LyX::exec(int & argc, char * argv[]) FileName(package().temp_dir().absFileName() + "/lyxsocket"))); // Start the real execution loop. - if (!theServer().deferredLoadingToOtherInstance()) + 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(); @@ -419,8 +419,12 @@ void LyX::prepareExit() // Write the index file of the converter cache ConverterCache::get().writeIndex(); - // close buffers first - pimpl_->buffer_list_.closeAll(); + // closing buffer may throw exceptions, but we ignore them since we + // are quitting. + try { + // close buffers first + pimpl_->buffer_list_.closeAll(); + } catch (ExceptionMessage const &) {} // register session changes and shutdown server and socket if (use_gui) { @@ -512,7 +516,7 @@ int LyX::execWithoutGui(int & argc, char * argv[]) } // Used to keep track of which buffers were explicitly loaded by user request. - // This is necessary because master and child document buffers are loaded, even + // This is necessary because master and child document buffers are loaded, even // if they were not named on the command line. We do not want to dispatch to // those. vector command_line_buffers; @@ -771,7 +775,7 @@ namespace { return std::string(line, nameLen); } } -} +} // namespace void cleanDuplicateEnvVars() { @@ -865,7 +869,7 @@ bool LyX::init() #endif lyxrc.tempdir_path = package().temp_dir().absFileName(); - lyxrc.document_path = "."; + lyxrc.document_path = package().document_dir().absFileName(); if (lyxrc.example_path.empty()) { lyxrc.example_path = addPath(package().system_support().absFileName(), @@ -1057,7 +1061,8 @@ bool LyX::queryUserLyXDir(bool explicit_userdir) || configFileNeedsUpdate("lyxmodules.lst") || configFileNeedsUpdate("textclass.lst") || configFileNeedsUpdate("packages.lst") - || configFileNeedsUpdate("lyxciteengines.lst"); + || configFileNeedsUpdate("lyxciteengines.lst") + || configFileNeedsUpdate("xtemplates.lst"); } first_start = !explicit_userdir; @@ -1379,7 +1384,7 @@ int parse_force(string const & arg, string const &, string &) } -} // namespace anon +} // namespace void LyX::easyParse(int & argc, char * argv[])